背景:
我知道这个问题以前有人问过,我已经把我找到的所有答案都看了一遍,但似乎还没有人给出一个令人满意的答案。我看到脸书对此有一个漏洞,但由于缺乏信息而关闭了它。这就是为什么我再次询问,看看现在是否有人找到了任何好的解决方案。
我正在尝试获得一个短暂的访问令牌,以便能够获得用户配置文件。直到一段时间前,这还很好,现在我只从api调用中得到"OAuthException:This authorization code has been used."。
使用的技术:
- PHP(没有用于Facebook API交互的第三部分库或Facebook SDK)
- cURL
- 图形API
- https
逻辑流
-
获取登录对话框的url,如下所示:
https://graph.facebook.com/oauth/authorize?client_id=[APP_ID]&redirect_uri=[URLENCODED_redirect_uri]&display=popup&scope=publish_stream
-
通过Facebook登录对话框登录。成功重定向时将用户添加到指定的回调URI,并添加"代码"quersy字符串变量。
-
当用户重定向到指定的回调URI时立即尝试获取一个带有"code"的短命accesstoken由Facebook登录对话框提供的变量。我是通过调用此url:
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]
我每次都会收到以下回复:{"错误":{"消息":"此授权码已过期。","类型":"OAuthException","代码":100}}
我已经知道:
- 我将获得一个短暂的访问令牌
- 该代码仅在10分钟内有效
- 我只能使用该代码一次(我的日志记录确认我只调用只有一次access_token请求)
我错过了什么?为什么它突然停止工作了?任何答案、提示或技巧都将不胜感激!提前谢谢。
如果我理解。
每次你登录facebook时,这个令牌都会更改。
你需要获得一个新的令牌,每次你都要进行新的登录。