驗證與資料存取權

Facebook 登入具備兩個主要優點:驗證與資料存取權。這兩個優點並不互相排斥。您可以使用 Facebook 登入驗證用戶,而無需計劃存取其資料。在這種情況下,您無需索取權限或讓您的應用程式完成應用程式審查

驗證和資料存取權都只會持續一段有限的時間。不過,驗證和資料存取權的有效期不同,具體取決於不同因素。

驗證

驗證讓用戶可使用其 Facebook 憑證登入您的流動應用程式或網頁版應用程式,並建立帳戶,而無需單獨建立或記住密碼。

驗證過期

應用程式使用 Facebook 登入驗證用戶時,會收到用戶存取憑證。如果應用程式使用其中一種 Facebook SDK,則此憑證將維持有效大約 60 天。然而,只要該用戶使用應用程式,SDK 就會自動重新整理此憑證,因此這些憑證會在最後一次使用之後 60 天過期。如果應用程式未使用 Facebook SDK,則您需要手動加入用於重新整理用戶憑證的程式碼。如果用戶存取憑證過期,則應用程式必須讓用戶再次完成登入流程。

資料存取權

Facebook 登入亦讓您可以在用戶登入應用程式時要求取得權限。如果用戶授予這些權限,則應用程式可以利用這些權限存取用戶資料內容。例如,應用程式可以存取用戶的姓名和個人資料相片。

如果應用程式要求取得權限,該應用程式通常需要通過應用程式審查,這樣 Facebook 才能確保資料不會遭到濫用。應用程式可以要求取得用戶的姓名和相片(預設個人檔案欄位)以及電郵,而無需完成應用程式審查,但所有其他權限都需要審查。如需查看權限清單並了解需要為哪些權限完成應用程式審查,請參閱權限參考資料

資料存取權過期

資料存取權的有效期為由用戶最後上線時間起計的 90 天。此 90 天期限過期後,用戶仍然可以存取應用程式,即系統仍會將用戶視為已通過驗證,但應用程式無法存取用戶資料。如需重新取得資料存取權,應用程式必須要求用戶重新授予權限。

如需使用 Facebook Android SDK 或 Facebook iOS SDK 要求重新授權,請對 LoginManager 呼叫 reauthorizeDataAccess()

如果使用 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 SDK 和 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 天內未使用某項權限,則該權限將過期。即使該權限已通過應用程式審查的批准亦不例外。