Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook重定向url问题OAutheException_Facebook_Api_Facebook Graph Api_Oauth - Fatal编程技术网

Facebook重定向url问题OAutheException

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

我的应用程序运行了很长一段时间,但现在我从Facebook上得到了一个错误,它说:

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