无法授权Facebook JS SDK中的用户:“;此授权码已被使用。”;或者如何获得新的授权令牌?
我正在尝试使用Facebook对用户进行身份验证。除了Ajax调用之外,它工作正常。大多数时候,它只是发送旧令牌,我得到:无法授权Facebook JS SDK中的用户:“;此授权码已被使用。”;或者如何获得新的授权令牌?,facebook,facebook-graph-api,facebook-login,facebook-authentication,Facebook,Facebook Graph Api,Facebook Login,Facebook Authentication,我正在尝试使用Facebook对用户进行身份验证。除了Ajax调用之外,它工作正常。大多数时候,它只是发送旧令牌,我得到: {"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}} 所以我试着用 FB.getLoginStatus(function(response) { if (response.status === 'connected'
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
所以我试着用
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
return fn();
...
这不起作用,因此我将:true作为参数添加到getLoginStatus以防止缓存:
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
console.log('connected');
fn();
} else if (response.status === 'not_authorized') {
console.log('not_authorized);
} else {
console.log('not_logged_in');
}
},true);
太好了!只是速度太慢了。我做错什么了吗?我可以在每次操作后获得新的令牌,这样我就不需要等待下一个操作了吗
谢谢
以下是Facebook所说的: “OAuth授权代码的新安全限制。 我们只允许将授权代码交换为访问令牌一次,并要求在创建后的10分钟内将其交换为访问令牌。这符合OAuth 2.0规范,该规范从一开始就规定“授权代码必须是短期和一次性使用的“。有关详细信息,请查看我们的身份验证文档 解决方法是使用扩展访问令牌api:
我理解这一点。但是有没有一个自动获取新代码的选项?如果我需要在每次调用之前获得新的令牌,那么这是否会使JSSDK无法用于频繁的ajax调用?除了在服务器端创建用户并将其放入会话之外,还有其他解决方案吗?啊,是的:)-你必须扩展你的访问令牌,你可以链接到facebook答案的来源吗?我的答案现在已经4岁了:P