この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Graph APIを使う
FacebookアプリでGraph APIを用いて各種情報にアクセスする場合、AccessTokenを用いるとFacebookにログインしていない状態でも情報を取得することができます。例えば以下のような書き方をします。
https://graph.facebook.com/me/friends?access_token=XXXXXXXXXXXXXXXXXXXXXXX
AccessTokenの取得
AccessTokenを取得するには、Facebookアプリの承認を行い、Facebook APIを使って取得します。
<html>
<head>
<script src="https://connect.facebook.net/en_US/all.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<p><input id="AccessToken" type="text" value="" width="100%" size="100"/></p>
<div id="fb-root"></div>
<script type="text/javascript">
$(document).ready(function () {
FB.init({
appId: '138903622884140',
cookie: true,
xfbml: true,
status: true,
oauth: true });
FB.Event.subscribe('auth.statusChange', handleStatusChange);
});
function handleStatusChange(response) {
document.body.className = response.authResponse ? 'connected' : 'not_connected';
if (response.authResponse) {
console.log(response.authResponse);
$('#AccessToken').val(response.authResponse.accessToken);
}
}
function login(){
FB.login(function(response) { }, {scope:'email'});
}
</script>
</body>
</html>
AccessTokenの有効期限切れ
AccessTokenの有効期限切れは、4つのシナリオが考えられます。
- 2時間を経過してセッション切れ
- パスワードの変更
- アプリの承認解除
- Facebookからのログアウト
有効期限切れのレスポンス
AccessTokenが有効期限切れになったときに返ってくるJSON文字列についてご紹介します。
2時間を経過してセッション切れ
{
error: {
type: "OAuthException",
message: "Session has expired at unix time
SOME_TIME. The current unix time is SOME_TIME.”
},
}
パスワードの変更
{
error: {
type: "OAuthException",
message: "The session has been invalidated because
the user has changed the password.",
},
}
アプリの承認解除
{
error: {
type: "OAuthException",
message: "Error validating access token: USER_ID
has not authorized application APP_ID",
},
}
Facebookからのログアウト
{
"error": {
"type":"OAuthException",
"message":"Error validating
access token: The session is invalid because the
user logged out."
}
}
有効期限切れの対処方法
どのエラーもOAuthExceptionですので、レスポンス文字列を比較して判別しましょう。もし、エラーだった場合は再ログインや再承認を促しましょう
まとめ
Graph APIで用いられるAccessTokenの有効期限について理解を深めました。今回はJavaScriptからのみの利用でしたが、サーバーサイドからGraph APIにアクセスする際にも同じように使えるはずです。Facebookの特性を理解してソーシャルアプリデベロッパーになりましょう!