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