非常奇怪的错误。我使用的是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的帖子,但对我没有任何帮助
对于有效的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。这可能会限制您访问授权中要求的某些权限。这是不可取的。