如果我使用服务器端流程对用户进行身份验证并获取访问令牌,我如何在 JavaScript SDK 中设置该访问令牌并使用它从客户端进行调用?
问问题
791 次
1 回答
4
用户完成服务器端身份验证流程后,用户已获得您的应用程序的授权,您需要做的就是使用FB.getLoginStatus方法:
FB.getLoginStatus(function(response) {
if (response.status === "connected") {
console.log("authResponse: ", response.authResponse);
FB.api("me", function(response2) {
console.log("Hey there " + response2.name);
});
}
else if (response.status === "not_authorized") {
// user is logged in to facebook but hasn't authorized your app, should not happen if he went through the server side authentication
}
else {
// user is logged out of facebook, also should not happen
}
}
如您所见,您可以简单地使用 js sdk 来查询图形,无需手动获取令牌,但如果您仍然需要它,authResponse
则应具有以下格式:
authResponse: {
accessToken: "aaaaaaa",
expiresIn: "bbbbbb",
signedRequest: "cccccc",
userID: "dddddd"
}
编辑
如果用户登录到 facebook 并允许并与您的应用程序交互,那么是的,getLoginStatus
应该返回一个有效的访问令牌。
在少数情况下情况并非如此,其中一种是令牌已过期。
正如它在处理无效和过期的访问令牌中所述:
使用 Javascript SDK 实现身份验证的桌面 Web 和移动 Web 应用程序
调用 FB.getLoginStatus() 或确保 status: true 在您调用 FB.init() 时设置意味着下次用户登陆您的应用程序并登录 Facebook 时,您将通过这些调用传递 authResponse 对象将包含一个新的、有效的访问令牌。
在这种情况下,它只是用户使用您的应用程序的行为,它隐式地生成了一个新的访问令牌。
于 2012-06-04T20:28:53.870 回答