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に付与されているノンスからサービスユーザの情報を取得して連携完了。