如何在JavasScript SDK中设置Facebook访问(从服务器)

如何在JavasScript SDK中设置Facebook访问(从服务器),facebook,facebook-graph-api,facebook-javascript-sdk,Facebook,Facebook Graph Api,Facebook Javascript Sdk,如果我使用服务器端流对用户进行身份验证并获取访问令牌,我如何在JavaScript SDK中设置该访问令牌并使用它从客户端进行调用?一旦用户完成服务器端身份验证流,用户就已经获得了应用程序的授权,您只需使用以下方法: 如您所见,您只需使用js sdk查询图形,无需手动获取令牌,但如果您仍然需要它,authResponse应具有以下格式: authResponse: { accessToken: "aaaaaaa", expiresIn: "bbbbbb", signedR

如果我使用服务器端流对用户进行身份验证并获取访问令牌,我如何在JavaScript SDK中设置该访问令牌并使用它从客户端进行调用?

一旦用户完成服务器端身份验证流,用户就已经获得了应用程序的授权,您只需使用以下方法:

如您所见,您只需使用js sdk查询图形,无需手动获取令牌,但如果您仍然需要它,
authResponse
应具有以下格式:

authResponse: {
    accessToken: "aaaaaaa",
    expiresIn: "bbbbbb",
    signedRequest: "cccccc",
    userID: "dddddd"
}

编辑 如果用户登录到facebook并允许与您的应用程序进行交互,则
getLoginStatus
应返回有效的访问令牌。
有些情况并非如此,其中之一是令牌已过期。

正如它在报告中所述:

使用Javascript SDK实现身份验证的桌面Web和移动Web应用程序

调用FB.getLoginStatus()或确保在 call FB.init()表示用户下次登陆您的 应用程序,并登录到Facebook,即您要创建的authResponse对象 作为这些调用的结果传递的将包含一个新的、有效的 访问令牌

在这种情况下,这只是用户使用应用程序的行为 隐式生成一个新的访问令牌


谢谢,这件事我一点也不清楚。只是为了确保我能理解。一旦用户授权了我的应用程序(无论是在服务器上还是在客户端),getLoginStatus将始终返回有效的authToken和stratus“已连接”,我不需要让他们重新验证?此解决方案工作正常,谢谢。我只有一个问题,response.status在我打开未标记的页面时返回null,在刷新页面之前,在另一个选项卡中登录。为了解决这个问题,我必须将第二个参数传递给FB.getLoginStatus:“true”,这迫使SDK向Facebook发出新请求并正确更新登录状态。根据下面的文章,Facebook缓存FB.getLoginStatus响应。
authResponse: {
    accessToken: "aaaaaaa",
    expiresIn: "bbbbbb",
    signedRequest: "cccccc",
    userID: "dddddd"
}