[小ネタ]LIFFを閉じるとSDKで取得できるアクセストークンが無効化されます #LINE_API

2019.08.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、中村です。
完全に小ネタですがドキュメントには書かれていなかったので備忘録です。

LIFFで取得できるアクセストークン

LIFFでは、Social APIをリクエストするためのアクセストークンが取得できます。LIFFの初期化成功後、getAccessToken()を実行するだけです。

<script src="https://d.line-scdn.net/liff/1.0/sdk.js"></script>
<script>
    liff.init(
        data => {
            const accessToken = liff.getAccessToken();
            // お好きな処理をする
        },
        err => {
            alert(err);
        }
    )
</script>

上記コードで取得したアクセストークンを元に、Social APIにリクエストすると通常このようなデータが取得できます。

$ curl -v -X GET https://api.line.me/v2/profile \
      -H 'Authorization: Bearer {accessToken}'
{
    "userId":"xxxxxxxxxxxxxxxxx",
    "displayName":"nakamura",
    "pictureUrl":"https://profile.line-scdn.net/xxxxxxxxxxx"
}

しかしLIFFを閉じた状態で同様のリクエストを行うとエラーになります。

{
    "message":"The access token revoked"
}

どうやらLIFFを閉じた後に対象のアクセストークンを無効化しているようです。

まとめ

もちろんLIFF内で取得することを前提にSDK開発されておりますので、自動で無効化されているのは良いと思います。一方で構築する外部APIでLIFFのアクセストークンを利用したい場合にテストを常にLIFFでの操作をして行う必要があるということがわかりました。

完全に小ネタですがLIFF内で利用するAPIの開発には影響がありそうです。