かなり久しぶりに記事書きます。

某案件でFacebookと連携して記事をインポートするような機能を実装中なのですが、実装中に予想外の現象が起きました。

Facebookのアクセストークンは以前のoffline_accessパーミッションが廃止されたことにより、最大60日有効のアクセストークンしか取得できないはずでしたが、今回まさかの有効期限無制限のアクセストークンが得られてしまいました。

やり方は以下のとおり。

1. アプリ登録時にmanage_pagesパーミッションを要求
2. アクセストークンを取得
3. アクセストークンの期限を延長 ※ここを参照

本来ならアクセストークンの期限を延長すると期限が60日になるのですが、1を実施することにより期限がNever(無期限)となります。
以下がAccessTokenDebuggerで有効期限を確認した結果です。

NeverAccessToken

manage_pagesは管理Facebookページ一覧(/me/accounts)を利用するためのパーミッションなので、Facebookページの管理には特別な権限を付与しているということなのでしょうか??
ここに色々説明が書いてあるっぽいのですが英語の弱い私には正しい解釈が出来ないでいます。

まぁFacebookページの管理以外には使うなよ!ってことなんですかね。

※ちなみに3の期限延長をした際に受け取る文字列には通常expiresが含まれているのですが、今回の対応を行うと含まれないので注意です。(この現象によって今回の件の判明につながりました)