脸书错误“验证验证码错误”

2022-08-30 10:05:54

非常奇怪的错误。我使用gide 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 时,我收到错误“验证验证码时出错”。我检查了evering,错误是在?r=site/oauth2,但我需要传递一些参数,有人可以帮助我吗?我阅读了帖子 http://forum.developers.facebook.net/viewtopic.php?id=70855 但对我来说没有什么用


答案 1

目前(截至 2011 年 3 月)对于有效redirect_uri的要求,存在无证要求。

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

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

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

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

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


答案 2

测试时整天都有同样的问题(编码为)...redirect_uri=http://localhost:8000http%3A%2F%2Flocalhost%3A8000

解决方案很简单,就是确保将尾部斜杠放在 uri 的末尾。所以(编码为)。/redirect_uri=http://localhost:8000/http%3A%2F%2Flocalhost%3A8000%2F

同样,请确保两个请求的 相同。redirect_uri


推荐