サーバから現在のセッションステータスを取得し、ログイン中であればセッションオブジェクトを返します。
ユーザのステータス(そのユーザが誰であるのか)は、ページ読み込み後最初に取得したい場合が多いでしょう。そのためにJS SDKでfacebook.comに問い合わせます。Facebookは以下の二つのうちの一つを返します。
- ユーザが知らない誰かである
- ユーザはアプリケーションを許可したユーザであり、そのセッションオブジェクトを返す
ユーザが誰であるかを知るには以下のようにします。
FB.getLoginStatus(function(response) {
if (response.session) {
// logged in and connected user, someone you know
} else {
// no user session available, someone you dont know
}
});
上記の例は、ページロード時に一度、facebook.comから得たセッション情報をもとに実行されるコールバックです。
Response and Session objects
FB.getLoginStatusを実行する時は、HTTPリクエストがwww.facebook.comに対して送られてユーザの現在の状況を確かめることが"あり得ます”。というのも、FB.getLoginStatusがこのブラウザセッション中に既に呼ばれ、クッキーがセットされていれば、HTTPリクエストをfacebook.comに対して問い合わせる必要がないからです。セッション情報の問い合わせが完了すると、コールバック関数に対してレスポンスオブジェクトが渡されます。ユーザがFacebookにログイン済みでアプリケーションを許可している場合、レスポンスオブジェクトにはセッションオブジェクトを含みます。レスポンスオブジェクトは以下のような構造となります。{
status: 'connected',
session: {
access_token: '...',
expires:'...',
secret:'...',
session_key:'...',
sig:'...',
uid:'...'
}
}
レスポンスオブジェクト内のセッションオブジェクトの存在を確かめられれば、ユーザはアプリケーションの利用者である事がわかるので、そこから先のFacebook API呼び出しへと移れます。セッションオブジェクトが存在しない場合、ユーザはFacebookにログインしていないか、アプリケーションを許可していません。
セッションオブジェクト内の最も便利な部分はuid(ユーザのID)とアクセストークンです。アクセストークンは、ユーザの代理としてFacebook APIへリクエストを送る際に利用します。
Events
JavaScriptアプリケーションは通常、多くのイベント監視の上に成り立ちますので、SDKは多くのイベントを監視できるようにする事でサポートしています。これらイベントは認証フロー(FB.login() や Login button.)の最中に発生します。Comments pluginなどのウィジェットもトリガとなり得ます。auth.login
このイベントはアプリケーションが最初にユーザを把握した段階で発生します(別の言い方をすると、まだセッション情報を持っていない場合に取得処理した時です)
auth.logout
このイベントは、有効なユーザ情報がなくなった時に発生します(別の言い方をすると、それまではセッション情報があったのに、利用ユーザの情報をチェックできなくなった時です)
auth.sessionChange
セッションに影響を与える変化全てで発生します。すなわち、ログイン、ログアウト、セッションのリフレッシュです。アプリケーション上でユーザがアクティブである限り、セッション情報は時間の経過でリフレッシュされます。auth.statusChange
Typically you will want to use the auth.sessionChange event. But in rare cases, you want to distinguish between these three states:
auth.sessionChangeイベントを使いたいケースは多くなるでしょう。しかしながらレアなケースとして、以下の3つの状態を区分したい時があります。
- コネクトされた状態
- Facebookにログインしているがアプリケーションにコネクトしていない
- Facebookにログインすらしていない
FB.Event.subscribe と FB.Event.unsubscribe 関数は、これらイベントを監視する為に使われます。以下のようにです。
FB.Event.subscribe('auth.login', function(response) {
// do something with response
});
これらイベント発生時に返されるレスポンスオブジェクトはFB.getLoginStatus, FB.login, FB.logout.と同じ形式です。レスポンスオブジェクトは以下を含みます
- status
ユーザのステータス。connected, notConnected, unknownのいずれか
- session
- セッションオブジェクト
- perms
- カンマ区切りのパーミッション文字列。永続するものではありません。
Parameters
Name | Type | Description |
---|---|---|
cb | Function | コールバック関数 |
force | Boolean | ログイン状態を強制的にリロードします。(デフォルトはfalse) |