LINE Messaging APIでアカウント連携機能を作る

公開日時

LINE Messaging APIを使う機会があったので、ドキュメントを読みながらアカウント連携機能を実装した。

LINE APIのドキュメントはしっかり書かれていて分かりやすい。

今回はline-bot-sdk-nodejsを使っていたのでgetLinkTokenメソッドを呼べばトークンを取得できた。

const linkToken = await this.client.getLinkToken(lineUserId);
return this.client.replyMessage(this.event.replyToken, {
  type: 'template',
  altText: 'Account Link',
  template: {
    type: 'buttons',
    text: 'アカウント連携',
    actions: [
      {
        type: 'uri',
        label: 'アカウント連携する',
        uri: `${yourAppUrl}/account_link?linkToken=${linkToken}`
      },
      {
        type: 'postback',
        label: 'アカウント連携を解除する',
        data: 'unlink'
      }
    ]
  }
});

規約に連携解除機能を必ず提供するようにとあったので、postbackイベントで連携解除できるようにしておいた。

あとはサービス側でユーザに認証をしてもらい、ノンスを付与して、DB(か何かしらのストレージ)にノンスとユーザIDを保存してLINEにリダイレクトする。

正常完了するとアカウント連携Webhookイベントが送られてくるので、Webhookに付与されているノンスからサービスユーザの情報を取得して連携完了。

参考


Related #js

AWS SESの受信メールを暗号化してs3に保存しLambdaで読み込む

jsの場合、複合処理を独自実装する必要がある

Next.jsのPreview Mode時はAnalyticsを無効化する

cookieの__next_preview_dataキーで判定

Next.js 11

手軽にアップグレードできた

VSCode Remoteで新規ファイルを作った際にTypescriptのPathが認識されない問題

「Ctrl + Shift + P」でコマンドパレットを開いて「Reload Window」を実行