无法在Facebook JS SDK中授权用户:“此授权代码已被使用。”或者如何获得新的授权令牌?

时间:2013-04-25 20:28:36

标签: facebook facebook-graph-api facebook-login facebook-authentication

我正在尝试使用Facebook来验证用户身份。除了Ajax调用之外它工作正常。大多数时候它只发送旧令牌,我得到:

{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}

所以我尝试做的是用

包装每个ajax调用
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);

大!除非它非常缓慢。难道我做错了什么?我可以在每次动作后获得新的令牌,所以我不需要在下一次之前等待吗?

由于 w ^

1 个答案:

答案 0 :(得分:16)

这就是Facebook所说的:

“OAuth授权码的新安全限制。 我们只允许一次授权代码交换访问令牌,并要求在创建后的10分钟内将其交换为访问令牌。这与OAuth 2.0规范一致,从一开始就说“授权代码必须是短暂的并且一次性使用”。有关更多信息,请查看我们的身份验证文档。

解决这个问题的方法是使用扩展访问令牌api:

https://developers.facebook.com/docs/howtos/login/extending-tokens/

相关问题