Amazon CognitoではLINEログインのボットリンク機能は…使えません!


できないことが早期に分かることも開発では必要だと思うので、あえて書いておきます。

伝えたいことは表題通りです。
LINEログインのボットリンク機能は、Amazon CognitoのCognito User Poolでは使えません。
(もしできる方法があったなら、教えてください!)

ボットリンク機能とは

LINEログインの際に、LINE公式アカウントを友だち追加するオプションを表示できる機能です。
詳しくはこちら。

https://developers.line.biz/ja/docs/line-login/link-a-bot/

これを利用するには、LINEログインの認可URLにbot_promptというクエリパラメータをつける必要があります。

以下のような感じで。

https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id={CHANNEL_ID}&redirect_uri={CALLBACK_URL}&state={STATE}&bot_prompt={BOT_PROMPT}&scope={SCOPE_LIST}

Cognito User PoolのOpenID Connect連携

Cognito User PoolにはOpenID Connectを連携させる機能があります。

LINEログインはOpenID Connect準拠なので、必要な設定をすればUser PoolのIDプロバイダーとして利用することができます。

Cognito設定画面

問題の発覚

私のプロジェクトでは、Amplify JavaScriptライブラリを使っています。
Auth.federatedSignInを使ってLINEログインを行います。

さて、ボットリンク機能を使うには、LINEログインの認可エンドポイントに飛ぶとき、URLにbot_promptというパラメータをつける必要があります。

「きっと追加のクエリパラメータを渡せるオプションがあるだろう」と甘く見て開発を進めていました。

ですが、ありません。

https://aws-amplify.github.io/amplify-js/api/classes/authclass.html#federatedsignin

customStateを渡すことはできますが、それ以外のパラメータを指定することはできません。

そもそも、クライアントアプリから直接LINEログインにリダイレクトするのではなく、一回xxxxxxxxxx.auth.ap-northeast-1.amazoncognito.comを経由することになります。

なので、LINEログインの認可URL(https://access.line.me/oauth2/v2.1/authorize)をどのように組み立てるか、クライアントアプリではどうやっても制御できないのです。

Cognitoの設定画面にもそれらしい項目はありません。

StackOverflowにも質問が上がっていました。Auth0では動的にパラメータを設定できるようですね。羨ましい。

https://stackoverflow.com/questions/60536204/aws-cognito-pass-additional-parameters-to-oidc-idp

こればっかりは、Cognito側でいつかサポートしてもらえることを(あまり期待せずに)待つしかなさそうです。

うーん、困った。