認証とデータアクセス

Facebookログインには、認証とデータアクセスという2つの大きなメリットがあります。これらは、同時に使用することができます。Facebookログインを使うと、利用者のデータへのアクセスを計画せずに、その利用者を認証できます。その場合、アクセス許可をリクエストしたり、アプリがアプリレビューを受けたりする必要はありません。

認証もデータアクセスも一定期間のみ有効になります。ただし、認証とデータアクセスの有効期限はそれぞれ異なり、依存する要因も異なります。

認証

認証を使うと、Facebook資格情報を使ってモバイルアプリやウェブアプリにログインしたり、アカウントを作成したりできます。パスワードを別途作成して記憶する必要はありません。

認証の有効期限

Facebookログインを使って利用者を認証しているアプリは、ユーザーアクセストークンを受け取ります。アプリでいずれかのFacebook SDKが使われている場合、このトークンは約60日間有効になります。ただし、利用者がアプリを使うごとにSDKによってトークンが自動的に更新されるため、トークンは最後に使われてから60日後に有効期限が切れることになります。アプリでFacebook SDKが使われていない場合、ユーザートークンを更新するコードを手動で組み込む必要があります。ユーザーアクセストークンが期限切れとなった場合、アプリでは、利用者にログインフローをやり直してもらう必要があります。

データアクセス

Facebookログインを使うと、利用者がアプリにログインする際にアクセス許可をリクエストすることもできます。これらのアクセス許可が利用者から認可されると、アプリによるユーザーデータのアイテムへのアクセスが可能になります。例えば、アプリはユーザーの名前やプロフィール写真にアクセスできるようになります。

Facebookでは、データの不正使用を確実に防ぐため、多くの場合、アクセス許可をリクエストするアプリに対してアプリレビューを課しています。アプリは、アプリレビューを受けなくても利用者の名前と写真(デフォルトのプロフィールフィールド)およびメールアドレスをリクエストできますが、それ以外のすべてのアクセス許可についてはレビューが必須になります。アクセス許可の一覧と、アプリレビューを必要とするアクセス許可については、アクセス許可のリファレンスでご確認ください。

データアクセスの有効期限

データアクセスの有効期限は、利用者が最後にアクティブであった時点を基準として90日間です。この90日間の有効期限を経過しても、利用者は引き続きアプリにアクセスできます(つまり、認証が維持されています)。しかし、アプリ側から利用者のデータにアクセスすることはできなくなります。データアクセスを再び獲得するには、アプリのアクセス許可を再度利用者に承認してもらう必要があります。

Android用Facebook SDKまたはiOS用Facebook SDKで再認証をリクエストするには、LoginManagerreauthorizeDataAccess()を呼び出します。

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日間使用されていないアクセス許可は期限切れになります。これは、アプリレビューで承認済みのアクセス許可にも該当します。