Q&A

スマホの外部ブラウザでLIFFアプリにLINEログインしようとした際、LINEアプリがインストールされているにも関わらず、ログインの前に「LINEアプリが未インストール、もしくは、ユニバーサルリンクが正しく動作していません。メールアドレス・パスワードを入力してログインしてください。」というエラーメッセージが出る。

前提・実現したいこと

スマホの外部ブラウザでLIFFアプリにLINEログインしようとした際、LINEアプリがインストールされている端末では、LINEログインの画面がすぐに表示されて欲しい。

発生している問題・エラーメッセージ

スマホの外部ブラウザでLIFFアプリにLINEログインしようとした際、LINEアプリがインストールされているにも関わらず、ログインの前に「LINEアプリが未インストール、もしくは、ユニバーサルリンクが正しく動作していません。メールアドレス・パスワードを入力してログインしてください。」というエラーメッセージがでる。 また、「LINEアプリでログイン」を押しても何も起こらない。 LINEアプリがインストールされている端末では、LINEログインの画面がすぐに表示されて欲しい。

該当のソースコード

const initializeForLIFF = async () => {
	// 未初期化
	if (!liff.id) {
		await liff.init(
			{
				liffId:  "my-liff-id",
			},
			async () => {
				await liff.ready
				const idToken = await getIdToken()
				// ここからtokenを利用した処理
			}
		)
	} else {
		// 初期化済
		const idToken = await getIdToken()
		// ここからtokenを利用した処理
	}
}
const initializeForExternal = async () => {
	// 未初期化
	if (!liff.id) {
		await liff.init(
			{
				liffId: "my-liff-id",
			},
			async () => {
				await liff.ready
				// 外部ブラウザ・LINEブラウザの場合、loginが事前に必要
				// https://developers.line.biz/ja/reference/liff/#get-id-token
				liff.login({ redirectUri: location.href })
			}
		)
	} else {
		// 初期化済
		if (liff.isLoggedIn()) {
			const idToken = await getIdToken()
			// ここからtokenを利用した処理
		} else {
			// 外部ブラウザ・LINEブラウザの場合、loginが事前に必要
			// https://developers.line.biz/ja/reference/liff/#get-id-token
			liff.login({ redirectUri: location.href })
		}
	}
}
const initialize = async () => {
	try {
		if (liff.isInClient()) {
			// LIFFブラウザ
			initializeForLIFF()
		} else {
			// 外部ブラウザ
			initializeForExternal()
		}
	} catch (e) {
		console.log('liff init error.')
		console.log(e)
	}
}
initialize()

試したこと

ユーザーにLIFFアプリにログインしていただく際、ユーザーがliffブラウザで開いているかをliff.isInClient()で確かめ、liffブラウザで開いていない場合には、下記のドキュメントの「外部ブラウザでLINEログインを利用する場合」の項目にしたがい、liff.init()した後にliff.login()をするようにしました。 https://developers.line.biz/ja/docs/liff/developing-liff-apps/#liff%E3%82%A2%E3%83%95%E3%82%9A%E3%83%AA%E3%82%92%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B 上記実装後、LINEアプリをダウンロードしているiPhone、Android端末のブラウザ(ChromeおよびSafari)で、LIFFアプリにアクセスしたところ、 「LINEアプリが未インストール、もしくは、ユニバーサルリンクが正しく動作していません。メールアドレス・パスワードを入力してログインしてください。」というエラーメッセージが出て、メールアドレスとパスワードを入力しなければLINEログインの画面に進めません。 これではユーザーに取って非常に不便なため、LINEアプリをダウンロードしている端末であれば、メールアドレスとパスワードを入力せずとも、LINEログイン画面に遷移して欲しいと思っています。 これはLINE側で意図された挙動でしょうか。 でなければ、原因はなんでしょうか。

補足情報(FW/ツールのバージョンなど)

問題が発生した環境

  • iPhone
  • iOS14.4
  • LINE11.2.0
  • 0
  • 0
  • 5877
  • twitter facebook
本当によろしいですか? question.vm