通过身份验证,用户可以使用其 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 版 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 天内未使用某项权限,则该权限将过期。即使该权限已通过应用审核并获得批准,这一点也成立。