ウェブ向けのFacebookログインでのアクセストークン

ログインプロセスの最後にアクセストークンが生成されます。このアクセストークンは、呼び出しが特定のアプリの特定の利用者によって実行されたことを示す証明として、各API呼び出しと共に渡されます。

JavaScript用Facebook SDKでは、アクセストークンの保存とログインステータスの追跡がブラウザーで自動的に処理されます。そのため、アクセストークンをブラウザー自身に保存する特別な操作は必要ありません。

ただ、一般的なパターンとしては、アクセストークンを取得する、サーバーに渡す、サーバーが利用者に代わって呼び出しを行う、の順序で処理が進みます。トークンをブラウザーから取得するには、次のように、FB.getLoginStatus()経由で返されるresponse オブジェクトを使用します。

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    console.log(response.authResponse.accessToken);
  }
});

トークンは、長さが可変の内部文字列です。

ブラウザーで生成されるアクセストークンの有効期限は通常2時間程度で、JavaScript SDKによって自動的に更新される点に留意してください。サーバーから呼び出しを行う場合は、長期トークンを有効にする必要があります。詳細についてはアクセストークンのドキュメントをご覧ください

アクセストークンの再検証

通常、アプリでは、ログインダイアログからの応答が、ダイアログを起動したのと同じ利用者から行われたことを確認する必要があります。JavaScript SDKを使用すれば、これらのチェックが自動的に行われるため別途作業する必要はありません。その際、ブラウザーからのみ呼び出しを行ったと仮定されます。

サーバーに返す場合は、サーバーに届いたときにアクセストークンを再検証する必要があります。トークンの再検証については、ログインフローの手動構築に関するドキュメントをご覧ください。app_iduser_idが、アクセストークンのデバッグエンドポイントから想定されるものと一致することを検証する必要があります。

API呼び出しの実行

フローのこの段階で利用者が認証され、ログインします。これでアプリ側では、利用者に代わってブラウザーからAPI呼び出しを行う準備が整います。ブラウザーでは、FB.api()呼び出しを使用すると、非常に簡単にAPI呼び出しを実行できます。FB.api()は自動的に、アクセストークンを呼び出しに追加します。

コード:

FB.api('/me', function(response) {
    console.log(JSON.stringify(response));
});

IDと名前とともに配列が返されます。

{
  "id":"101540562372987329832845483",
  "name":"Bob Smith"
}

サーバー側からアクセストークンを使用して呼び出しを行う場合は、サーバーでSDKを使用して、同様の呼び出しを実行できます。ほとんどの場合、ウェブアプリケーションの構築にはPHPが使用されます。サーバー側のAPI呼び出しの実行例については、PHP SDKに関するドキュメントをご覧ください。

アプリのアンインストールの検出

アプリは、アプリ側で操作することなく、Facebook.comからアンインストールできます。この操作が実行されたときにアプリ側で検出できるようにするため、アンインストールごとに通知が送られる、アプリ利用登録解除のコールバックURLをアプリで指定できます。

利用登録解除のコールバックはAppダッシュボードで有効にすることができます。