Facebookアクセストークンを取得してそれを60日間使えるようにする

FacebookのOffline_accessが廃止されてから、アクセストークンは最大2ヶ月までしか使えないようになりました。
色々調べた結果、アクセストークンのアクセス期間を最大で2ヶ月までのばす方法を見つけました。
そこでアクセストークンのまとめとして、PHPで今までのアクセストークンを自動で60日間に延長させるコードを書いてみます。

ただこのスクリプトは自分で発行したアクセストークンを使用しているため、他の人のアクセストークンの場合うまくいかない可能性があります。

ご参考程度にお願いします。

それでははじめましょう

アクセストークンの取得

Facebookのアクセストークンには、ユーザーに紐付けられたアクセストークンと、Facebookのアプリに紐付けられたアクセストークンがあります。
Facebookのアプリを1つでも作ったことがある人であれば以下のURLからアプリのアクセストークン、自分のアクセストークンを確認することが出来ます。

>> Access Token Tool

どれでもよいので1つ自分のアカウントに紐付けられたアクセストークンを取得してみましょう。
そして右にある「Debug」というボタンを押してみてください。

Debugger Toolを使えばアクセストークンがいつまで有効かを確認することが出来ます。
確認してみましょう。

「in about an hour」と書いてある通り、あと大体1時間くらいしかこのアクセストークンは有効ではありません。
これを60日間、つまり2ヶ月間有効にしてみようと思います。

60日間に延長するためには?

アクセストークンを延長するためには以下のコードを使うことで60日間に延長することが出来ます。
APP_ID,APP_SECRET,ACCESS_TOKENの部分はそれぞれのアプリに合わせてください。

https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=ACCESS_TOKEN

このURLを使用すればアクセストークンを60日間まで延長することが出来ます。
それでは早速ですがコードを見てみましょう。

完成コード

それでは早速ですがコードを書いてみます。
もちろん僕が書くコードはPHPですw

<?php
// それぞれの環境に合わせる
define('APP_ID', アプリID);
define('APP_SECRET', アプリシークレット);

//事前に取得しておいたアクセストークン
$accessToken = "取得したアクセストークン";

$accessUrl = "https://graph.facebook.com/oauth/access_token?client_id=".APP_ID."&client_secret=".APP_SECRET."&grant_type=fb_exchange_token&fb_exchange_token={$accessToken}";
$validTokenData = file_get_contents($accessUrl);
$validToken = preg_replace('/(access_token=)(.*)(&expires=.*)/i', '$2', $validTokenData);

print_r($validToken);

本当に簡単なコードですが、これで出力されたアクセストークンをDebugger Toolで確認してみると60日間に延長されています。

上記の画像の赤枠を確認してみると「in about 2 months」と書いてあります。
つまりアクセストークンを60日間に延長することが出来ました!

最後に

いかがでしたでしょうか。
この方法で僕は1つのアクセストークンを使いまわしています。
ただこの方法でやり始めてまだ10日間くらいしかたっていないので60日たったあと、どうなるかはちょっとわかりませんw
もしうまくいかない場合はこの記事をアップデートしようと思います。
もっといい方法があるよ!っていう人は @DAI199 までか以下のコメント欄に書き込んでいただけると泣いて喜びます(´;ω;`)

この記事を読んでいるあなたにおすすめ!

僕がFacebookアプリを最初に作るときに参考にした本。始めは何か書籍で始めるのがよいのかもしれません。

参考

>> AccessTokenを取得する

>> 第20回 アクセストークンの期限を延長する