【问题标题】:Facebook: OAuthException: This authorization code has been usedFacebook:OAuthException:此授权码已被使用
【发布时间】:2014-01-06 00:20:12
【问题描述】:

背景:

我知道以前有人问过这个问题,我已经找到了所有答案,但似乎还没有人给出令人满意的答案。我已经看到 Facebook 有一个关于此问题的错误,但由于缺乏信息而将其关闭。这就是为什么我再次询问是否有人现在找到了任何好的解决方案。

我正在尝试获取一个短期访问令牌,以便能够获取用户个人资料。直到前一段时间,这一直很好,现在我只收到“OAuthException:此授权码已被使用”。从 api 调用返回。

使用的技术:

  • PHP(没有用于 Facebook API 交互的第三方库或 Facebook SDK)
  • 卷曲
  • 图形 API
  • https

逻辑流程

  1. 获取类似于此的登录对话框的 url:

    https://graph.facebook.com/oauth/authorize?client_id=[APP_ID]&redirect_uri=[URLENCODED_REDIRECT_URI]&display=popup&scope=publish_stream

  2. 通过 Facebook 登录对话框登录。成功重定向 用户到指定的回调 URI 并添加“代码” 查询字符串变量。

  3. 当用户被重定向到指定的回调 URI 时 立即尝试使用“代码”获取短暂的访问令牌 Facebook 登录对话框提供的变量。我这样做是 调用这个网址:

    https://graph.facebook.com/oauth/access_token?client_id=[APP_ID]&redirect_uri=[URLENCODED_REDIRECT_URI]&client_secret=[APP_SECRET]&code=[CODE_SENT_FROM_FACEBOOK]

我每次都会收到以下回复: {"error":{"message":"此授权码已过期。","type":"OAuthException","code":100}}

我已经知道了:

  1. 我将获得一个短期访问令牌
  2. 该代码仅在 10 分钟内有效
  3. 我只能使用一次代码(我的日志确认我只调用 access_token 请求一次)

我错过了什么?为什么它突然停止工作? 非常感谢任何答案,提示或技巧!提前致谢。

【问题讨论】:

  • 您是否尝试过将短期令牌换成长期令牌并改用它?插入代码应该只是一个额外的步骤。
  • 您确定在某处没有重定向循环?当您已经使用代码获取访问令牌或代码已过期时,就会出现该错误......也许发布一些 PHP。
  • 我也有这个问题,但我打电话给 $session = $helper->getSession();每次用户刷新页面或访问新页面时。还没有找到解决方法:(

标签: php facebook facebook-graph-api curl facebook-login


【解决方案1】:

如果我明白了。

每次登录 facebook 时,此令牌都会更改。

每次登录时都需要获取新令牌。

【讨论】:

  • 这在技术上是正确的,但对 OP 没有帮助或帮助。
猜你喜欢
  • 2016-06-21
  • 2016-06-22
  • 2012-11-25
  • 1970-01-01
  • 2016-03-05
  • 2013-02-20
  • 1970-01-01
  • 2023-03-26
  • 2018-10-02
相关资源
最近更新 更多