一尘不染

facebook错误“验证码验证错误”

php

非常奇怪的错误。我使用的是http://developers.facebook.com/docs/authentication/。所以我创建了对fb的请求并传递redirect_uri。我在本地主机上使用测试站点。所以如果我通过

redirect_uri =
http://localhost/test_blog/index.php

它工作正常,但如果我通过

redirect_uri = http://localhost/test_blog/index.php?r = site /
oauth2

它不想工作。我尝试使用

redirect_uri =。urlencode(’ http://localhost/test_blog/index.php?r = site /
oauth2

但没有用
我试图解释。我成功获取代码,但是当我访问https://graph.facebook.com/me?access_token时,出现错误“验证码错误”。我检查过everly,错误在
?r = site / oauth2中,
但我需要传递一些参数才能有人帮助我吗?我阅读了http://forum.developers.facebook.net/viewtopic.php?id=70855的帖子,但对我没有任何帮助


阅读 2578

收藏
2020-05-29

共1个答案

一尘不染

对于有效的redirect_uri,目前(截至2011年3月)没有记录在案的要求。

首先, 要授权的redirect_uri参数和access_token必须匹配

显然,Facebook(或更确切地说是OAuth2)正在使用redirect_uri作为内部密钥来对为access_token请求返回的代码进行编码。由于它可以验证回您的网站,因此有点聪明。它解释了为什么原本不需要redirect_uri参数的access_token请求需要一个。

其次, 您不能在redirect_uri中使用许多特殊字符

关于是否可以传递参数的讨论很多。他们可以限制您哪些字符有效,但是没有人发布我知道的列表。诸如url /
html编码之类的传统方法将失败,因为percent(%)无效。斜杠(/)也无效,因此嵌套重定向网址将始终失败。克服特殊char限制的唯一方法是将参数的值编码为base64。如果您使用的是ASP.NET,请查找Convert.ToBase64。

最后,这更多是个旁注。许多程序员传递错误信息,即一个简单的解决方案是传递type =
client_cred。这可能会限制您访问授权中要求的某些权限。这是不可取的。

2020-05-29