認証を使うと、Facebook資格情報を使ってモバイルアプリやウェブアプリにログインしたり、アカウントを作成したりできます。パスワードを別途作成して記憶する必要はありません。
Facebookログインを使って利用者を認証しているアプリは、ユーザーアクセストークンを受け取ります。アプリでいずれかのFacebook SDKが使われている場合、このトークンは約60日間有効になります。ただし、利用者がアプリを使うごとにSDKによってトークンが自動的に更新されるため、トークンは最後に使われてから60日後に有効期限が切れることになります。アプリでFacebook SDKが使われていない場合、ユーザートークンを更新するコードを手動で組み込む必要があります。ユーザーアクセストークンが期限切れとなった場合、アプリでは、利用者にログインフローをやり直してもらう必要があります。
Facebookログインを使うと、利用者がアプリにログインする際にアクセス許可をリクエストすることもできます。これらのアクセス許可が利用者から認可されると、アプリによるユーザーデータのアイテムへのアクセスが可能になります。例えば、アプリはユーザーの名前やプロフィール写真にアクセスできるようになります。
Facebookでは、データの不正使用を確実に防ぐため、多くの場合、アクセス許可をリクエストするアプリに対してアプリレビューを課しています。アプリは、アプリレビューを受けなくても利用者の名前と写真(デフォルトのプロフィールフィールド)およびメールアドレスをリクエストできますが、それ以外のすべてのアクセス許可についてはレビューが必須になります。アクセス許可の一覧と、アプリレビューを必要とするアクセス許可については、アクセス許可のリファレンスでご確認ください。
データアクセスの有効期限は、利用者が最後にアクティブであった時点を基準として90日間です。この90日間の有効期限を経過しても、利用者は引き続きアプリにアクセスできます(つまり、認証が維持されています)。しかし、アプリ側から利用者のデータにアクセスすることはできなくなります。データアクセスを再び獲得するには、アプリのアクセス許可を再度利用者に承認してもらう必要があります。
Android用Facebook SDKまたはiOS用Facebook SDKで再認証をリクエストするには、LoginManager
でreauthorizeDataAccess()
を呼び出します。
JavaScript用Facebook SDKの場合は、auth_type: 'reauthorize'
を使います。
FB.login(function(response) { // Original FB.login code }, { auth_type: 'reauthorize' })
ウェブの場合は、auth_type=reauthorize
で呼び出しを行います。
以下のアクセス許可は有効期限切れになりません。
ads_read
ads_management
business_management
configure_page_transactions
pages_manage_ads
pages_manage_cta
pages_manage_instant_articles
pages_manage_engagement
pages_manage_metadata
pages_manage_posts
pages_messaging
pages_read_engagement
pages_read_user_content
pages_show_list
read_audience_network_insights
read_insights
AndroidおよびiOS向けSDKの場合は、アクセストークンオブジェクトでdataAccessExpirationTime
を呼び出すことで、アプリのユーザーデータへのアクセスがいつ期限切れになるかを調べることができます。このメソッドでは、データアクセスが期限切れになることが定められた日付が返されます。
また、isDataAccessExpired
を呼び出して、ユーザーデータへのアクセスが期限切れになっているかどうかを調べることもできます。この場合は、ブーリアンが返されます。
サーバー側では、debug_token
エンドポイントからこの情報を取得できます。
ウェブの場合、payload: data_access_expiration_time
で有効期限を確認できます。
{ status: 'connected', authResponse: { accessToken: '...', expiresIn:'...', reauthorize_required_in:'...', data_access_expiration_time: '...', signedRequest:'...', userID:'...' } }
ユーザーが最後にアクティブであった時点に関係なく、アプリで90日間使用されていないアクセス許可は期限切れになります。これは、アプリレビューで承認済みのアクセス許可にも該当します。