Facebook重定向url问题OAutheException
我的应用程序运行了很长一段时间,但现在我从Facebook上得到了一个错误,它说:Facebook重定向url问题OAutheException,facebook,api,facebook-graph-api,oauth,Facebook,Api,Facebook Graph Api,Oauth,我的应用程序运行了很长一段时间,但现在我从Facebook上得到了一个错误,它说: Content:{“error”:{“message”:“验证验证代码时出错。请确保您的重定向uri与您在OAuth对话框请求中使用的uri相同”,“键入”:“OAuthException”,“code”:100} https://www.facebook.com/dialog/oauth/?client_id=163840537126360&redirect_uri=http://mycloud.niranja
Content:{“error”:{“message”:“验证验证代码时出错。请确保您的重定向uri与您在OAuth对话框请求中使用的uri相同”,“键入”:“OAuthException”,“code”:100}
https://www.facebook.com/dialog/oauth/?client_id=163840537126360&redirect_uri=http://mycloud.niranjan.com/facebook/callback//empty/?vTitle=Facebook&scope=email,短信,用户关于我,朋友关于我,用户活动,朋友活动,用户生日,朋友生日,用户教育历史,朋友教育历史,用户事件,朋友事件,用户喜欢,朋友喜欢,用户位置,朋友位置,用户照片,朋友照片,用户视频,朋友视频,用户关系,朋友关系,用户状态,朋友状态,用户签入,朋友签入,阅读流,发布流
有人能为这个问题提出解决方案吗?尼兰詹,我们确实看到了相同的错误信息。和你一样,这个月开始,我们的代码没有任何变化 我们仔细地验证了重定向uri在两个调用中确实完全相同——第一个是授权调用,第二个是访问令牌调用 我们向Facebook提交了申请,但他们将其归类为“低”: 在我们的案例中,我们做了一些不寻常的事情(因此这可能与您的案例无关)。我们的重定向uri是一个URL,另一个URL作为编码路径元素嵌入。URL-in-a-URL在传递给FB时进行了双重编码,已经开始导致Facebook API服务器出现问题 我们通过将嵌套URL的编码改为长十六进制数而不是%编码来解决这个问题,因此所有Facebook服务器看到的都是一个简单的重定向uri,路径中包含一些十六进制,不受正常URL编码/解码的影响 我怀疑Facebook改变了他们编码/解码URL参数的方式,可能解码了两次
如果你在做像我们这样的事情,试试这个方法。如果没有,请尝试一个完全不同且更简单的重定向uri,看看您是否能找到工作。并确保正确编码/解码所有URL查询参数。我意识到这已经晚了6周,但我想我会在这里发布,因为我找到了一个适合我们的修复方案。遇到同样的问题,在尝试对返回url进行编码(这不起作用)后,我意识到我们正在构建url,如下所示:
$url = "http://example.com/";
$redirect_script = "/cgi-bin/redirect.cgi";
$redirect_url = $url . $redirect_script;
然而,这导致返回的URL看起来像
http://example.com//cgi-bin/redirect.cgi
——注意example.com后面的“/”。当我从这个URL中删除双斜杠时,它又起作用了。哦,我看到你的重定向URL在/facebook/callback//empty?等中有相同的东西,我相信这就是问题所在。今天也有同样的问题,问题是重定向uri使用了http://URL模式,而Facebook只接受https://就我而言,我使用的是http://127.0.0.1:8000
-但是FB会自动将其更改为http://127.0.0.1:8000/
在OAuth重定向中,通过传递查询参数进行处理。在我的代码中更改我的URL以获得一个结束斜杠,为我解决了这个问题。我怀疑他们正在存储最终的可用版本,并将其与第二个请求进行比较。需要注意的是,如果您使用https://
但是在您的登录URL中使用http://
,那么它将抛出一个关于URL问题的OAutheException
因此,如果您正在使用https://
,则必须在登录URL中使用它
这解决了我的问题。我在Facebook上遇到了一些奇怪的行为 我的网站运行https,我总是遇到一个错误“验证验证码时出错。请确保您的重定向uri相同” 但我在redirect_uri和开发者面板(OAuth URL)中将https更改为http,然后错误消失,身份验证开始正常工作。但该网站仍然运行https
希望这对其他人有所帮助。在我的例子中,这是由我的查询字符串中的特殊字符引起的,我有base64代码,其中包含
/
和=
,我尝试了一些类似!@=/代码>
都会抛出相同的错误
只有两个看起来有效的字符是-
$
p.S
查询结束时的/
没有帮助。在查询字符串的中间也有禁止< < /P> < P> <强> Mo Halad A < /String >是正确的,我甚至没有使用$字符。
我编写了2个简单函数,允许我使用带参数的复杂返回URL:
public static string EncodeFacebookReturnUrl(string url)
{
return Regex.Replace(HttpUtility.UrlEncode(url), "%", "_-_");
}
public static string DecodeFacebookReturnUrl(string url)
{
return HttpUtility.UrlDecode(Regex.Replace(url, "_-_", "%"));
}
使用UrlEncode进行翻译只会产生1个“非法”字符(%),我将用合法字符串\u-\ u
替换它。
解码也很简单。你能在这里提供你当前使用的重定向uri
吗?请确保你在Facebook应用程序上设置的重定向url应该与你发送的相同,因为重定向uri
我多次遇到相同的问题,没有更改任何代码,我通过改变另一个不同的重定向uri来修复它,可能是因为Facebook的服务器改变了一些方法。我面临着同样的问题。我的应用程序在授权后无法生成访问令牌,结果显示以下消息:“验证验证码时出错。请确保您的重定向\u uri与您在OAuth对话框请求中使用的URL相同”。我正在使用urllib.urlencode(args)建立请求URL’谢谢!这正是发生在我身上的事。我用参数中的其他url发送了重定向url。可能的解决方法-将内部url编码为base64,效果很好。我也有同样的情况。请您写一个例子-您是如何在参数中编码url的。我从js发送的登录uri,但从服务器端发送的代码(c#)获取访问令牌的uri。我应该在比特位置编码吗?我使用http al