驗證與資料存取的比較

「Facebook 登入」提供兩個主要好處:驗證和資料存取。兩者並非相互排斥。不需規劃存取用戶的資料即可使用「Facebook 登入」進行資料驗證。在此情況下,不需要求權限或將應用程式送交應用程式審查

驗證和資料存取各自持續一段有限期間。但是,驗證和資料存取的到期時間不同,取決於不同的因素。

驗證

驗證讓用戶能夠登入您的行動或網路應用程式,並使用他們的 Facebook 憑證建立帳號。用戶不需建立或記住個別的密碼。

驗證到期

應用程式使用「Facebook 登入」驗證用戶身分時,會收到用戶的存取權杖。如果應用程式使用其中一個 Facebook SDK,權杖有效期將持續約 60 天。但是,每當用戶使用應用程式時,SDK 會自動重新整理權杖,因此權杖將在最後一次使用後 60 天到期。如果應用程式不使用 Facebook SDK,則需要加入手動重新整理用戶權杖的程式碼。如果用戶存取權杖到期,應用程式必須讓用戶再次進行登入流程。

資料存取

「Facebook 登入」還可讓您在用戶登入應用程式時要求權限。這些權限(如果由用戶授予)允許應用程式存取用戶資料項目。例如,應用程式可以存取用戶的名稱和大頭貼照。

如果應用程式要求權限,通常必須讓應用程式進行應用程式審查,協助 Facebook 避免資料遭到濫用。應用程式不需經過應用程式審查即可要求用戶的名稱和相片(預設個人檔案欄位)以及電子郵件,但若要求其他所有權限,則必須經過審查。有關權限清單以及哪些權限需要應用程式審查的資訊,請參閱權限參考資料

資料存取到期

根據用戶最後登入的時間,資料存取的到期時間為 90 天。當此 90 天期限到期時,用戶仍然可以存取您的應用程式(亦即用戶仍然是通過驗證),但您的應用程式無法存取用戶的資料。若要重新取得資料存取權限,您的應用程式必須要求用戶重新授權應用程式的權限。

若要使用 Facebook Android SDK 或 Facebook iOS SDK 要求重新授權,請呼叫 LoginManagerreauthorizeDataAccess()

若要透過 Facebook JavaScript 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 天內沒有使用權限,則該權限會到期。即使權限已通過應用程式審查,在此情況下一樣會過期。