Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法授权Facebook JS SDK中的用户:“;此授权码已被使用。”;或者如何获得新的授权令牌?_Facebook_Facebook Graph Api_Facebook Login_Facebook Authentication - Fatal编程技术网

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

无法授权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'

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

{"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