今天,Facebook oauth登录到我的网站中断了。我启动了调试器,发现解析访问令牌失败。这似乎是因为Facebook更改了oauth响应的格式。它曾经是CGI参数:Facebook登录破解,oauth响应序列化从CGI参数更改为JSON
access_token=EAAFO...cBUZD&token_type=bearer&expires_in=5183996
但这一切似乎一下子被过来的JSON:
{"access_token":"EAAFO...cBUZD","token_type":"bearer","expires_in":5183996}
在我的代码的修复看起来很简单。我只需要将解析器从CGI解析器更改为JSON解析器,并获取我感兴趣的相同变量:access_token
。
我的问题是关于这个版本。当我的网站中断时,我不喜欢它。
为什么Facebook改变这个?这种变化是否记录在案Oauth是否有某种版本,我应该用它来防止这种破坏?我如何得知Facebook未来对Oauth所做的更改?
Facebook API upgrade tool没有列出我需要对我的应用程序的最新版本的API的任何更改。在任何情况下,都不是我使用的Oauth的网址似乎有一个版本号嵌入其中:
https://www.facebook.com/dialog/oauth
https://graph.facebook.com/oauth/access_token
它在HTTPS宣布: //developers.facebook.com/docs/apps/changelog 2年前标题为“[Oauth Access Token]格式”。升级工具显示Facebook知道您需要更改的事情。 Facebook不可能知道你是否只处理旧格式或新老版本。 – WizKid
_“无论如何,我用于Oauth的URL都没有嵌入其中的版本号”_--这是因为您没有指定一个,所以它会回落到最低的当前API版本应用可以使用。 HTTPS://developers.facebook。com/docs/facebook-login/manually-build-a-login-flow显示为这两个端点显式传递的API版本。 – CBroe