网页版 Facebook 登录中的访问口令

在登录流程结束时,系统会生成一个访问口令。系统会将该访问口令与每个 API 调用一同传递,证明调用由特定应用的特定用户发出。

JavaScript 版 Facebook SDK 会自动处理浏览器中的访问口令存储和登录状态跟踪,因此您无需在浏览器中存储访问口令。

然而,一种常见的模式是获取访问口令并将其传递回服务器,然后服务器代表某用户进行调用。为了从浏览器获取口令,您可以使用通过 FB.getLoginStatus() 返回的 response 对象:

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    console.log(response.authResponse.accessToken);
  }
});

口令是一个长度可变的不透明字符串。

请留意,在浏览器中生成的访问口令通常只有几个小时的有效期,并且会由 JavaScript SDK 自动刷新。如果您从服务器进行调用,则需要生成一个长期口令,我们已在访问口令文档中对其进行了详细介绍。

重新验证访问口令

应用通常需要确认来自登录对话框的响应是由启动应用的同一用户做出。如果您使用 Facebook 的 JavaScript SDK 且仅从浏览器调用,这些检查会自动执行,而您则无需采取任何操作。

如果您决定将访问口令发送回服务器,则应确保在其到达服务器后重新进行验证。我们已在手动构建登录流程的有关文档中介绍了重新验证口令的相关内容。您需要验证 app_iduser_id 是否符合访问口令调试端点的预期。

执行 API 调用

在流程的这个阶段,用户已通过身份验证并登录。应用现在已准备好在浏览器中代表用户进行 API 调用。在浏览器中,最简单的方法是使用 FB.api() 调用。FB.api() 会自动将访问口令添加到调用中。

这段代码:

FB.api('/me', function(response) {
    console.log(JSON.stringify(response));
});

将返回一个带有编号和姓名的数组:

{
  "id":"101540562372987329832845483",
  "name":"Bob Smith"
}

如果您使用访问令口在服务器端进行调用,则可以使用服务器上的 SDK 发出类似调用。许多人使用 PHP 来构建网页应用程序。您可查阅我们的 PHP SDK 文档,了解一些发出服务器端 API 调用的示例。

检测用户何时卸载应用

用户可以通过 Facebook.com 卸载应用,而无需与应用进行交互。为帮助应用检测这类事件,我们允许应用提供取消授权回调网址,在发生该事件时,系统会向该网址发送通知。

您可以通过应用面板来启用取消授权回调。