Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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获取访问令牌。收到一封信,信上写着;验证验证码时出错“;_Facebook_Token - Fatal编程技术网

无法从Facebook获取访问令牌。收到一封信,信上写着;验证验证码时出错“;

无法从Facebook获取访问令牌。收到一封信,信上写着;验证验证码时出错“;,facebook,token,Facebook,Token,我正在使用java,演示应用程序的目的很简单:更新用户状态。 我遵循了第页的服务器端流程。我得到了auth对话框,facebook引导到回调url,我在我的回调页面中得到了代码。然后,当我尝试生成访问令牌时失败了 在指南页面中,它表示可以使用以下url生成访问令牌: https://graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID&redirect_uri=YOUR_URL& client

我正在使用java,演示应用程序的目的很简单:更新用户状态。 我遵循了第页的服务器端流程。我得到了auth对话框,facebook引导到回调url,我在我的回调页面中得到了代码。然后,当我尝试生成访问令牌时失败了

在指南页面中,它表示可以使用以下url生成访问令牌:

https://graph.facebook.com/oauth/access_token?
     client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&
     client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE
但在我的环境中发生的是,我收到了以下错误消息:

{
   "error": {
      "type": "OAuthException",
      "message": "Error validating verification code."
   }
}
我确信每个参数都是正确的,因为如果我更改client\u id值或client\u secret参数,我将收到不同的错误消息。代码参数是我从facebook回调中得到的。所以这应该是正确的,对吗?我真的不知道问题出在哪里


你知道吗?我被困在这里了…

我最近处理了这个问题:所有的东西都匹配,但由于OAutheException失败了。使它起作用的是将重定向uri(在流的两个请求中)更改为:


即,添加尾部斜杠。然后它成功了。愚蠢和愚蠢,但你说对了。

是的,后面的斜杠对我也有用,谢谢

出于调试目的,我发现完全使用fb在开发者页面上提供的代码很有帮助:

一旦你开始工作,你可以修改它以适应你自己的代码


我不确定,但您也可以在应用程序编辑屏幕上检查“站点URL”和“站点域”设置是否正确,因为根据文档,重定向uri必须在同一个域中。(这与画布/选项卡页面URL不同。)

我们也从中获得了一些乐趣

在我们的例子中,URL中的尾随斜杠已经存在,所以我尝试了我们在中使用的令牌,并进行了验证,所以看起来FB甚至没有在请求中看到令牌

经过一些调查后,我发现了头部撞击-我们只使用HTTP头进行GET,而不使用查询字符串,因此FB Littley根本看不到令牌

寓意似乎是,如果您可以在FB调试工具中验证令牌,那么您的请求中可能存在一些/某些/错误-

可能是缺少“/”或与应用程序定义的URL不匹配(域不匹配是另一个错误)。我还没有尝试过为HTTPS定义App/Web Url,并使用HTTP进行请求,但我怀疑这也会有问题

或者像在我们的例子中一样,请求方法可能是不正确的-使用头GET或post都抛出2500,您必须使用Querystring执行GET


希望有帮助

我也遇到了同样的问题,并尝试了上述建议。他们帮了我的忙,但我的问题是我的redir URL有一个查询参数,Facebook对此并不感冒。因此,这个故事的寓意是,您发送给交换令牌的redir url必须与原始redir url相同,并且不能有查询参数。

我也遇到了同样的问题。这是一个URL差异,但与其他发布的不同,我的是HTTP和HTTPS之间的差异

我们有BigIP处理HTTPS请求并转发到HTTP Apache服务器。当BaseFacebook的getCurrentUrl()函数被调用时,它检测到HTTP,而不是原始HTTPS。我对该函数进行了如下修改:

受保护的函数getCurrentUrl(){ 如果((isset($_服务器['HTTPS'])&($_服务器['HTTPS']=='on'|$|$_服务器['HTTPS']==1))|| (isset($_服务器['HTTP_X_转发的协议]])和&$_服务器['HTTP_X_转发的协议]='https')| (isset($\u服务器['HTTP\u PSEUDOSSL'])和&$\u服务器['HTTP\u PSEUDOSSL']=='true')){ $protocol='https://'; } 否则{ $protocol='http://'; } ...
此版本支持
HTTP\u PSEUDOSSL
密钥。我希望这对其他人有所帮助。

我也遇到了url问题,但解决方案不同。我将返回的url传递给服务器,并使用该值中的
code
值来请求访问令牌。但是,根据3.1.1版本中的一些注释JavaScript SDK将
代码
与空字符串的
重定向uri
相关联,即

//JSSDK将重定向uri为“”的代码放入
如果(数组\密钥\存在('code',$signed\请求)){
$code=$signed_请求['code'];
$access\u token=$this->getAccessTokenFromCode($code,”);
if($access\u令牌){
//等
}
}

在我将自己的服务器端代码更改为使用
重定向uri
后,对访问令牌的请求起了作用。

在我的情况下,我的代码在IE上不起作用。 问题是这样的

$user_id = $facebook->getUser();
if ($user_id)
因为getUser函数总是以某种方式返回0,所以该条件始终为真。然后,他从无效令牌生成了该错误。 好吧,我只是这样说:

if ($user_id>0)

愚蠢的东西…

我自己解决了这个问题…关键问题是关于“URL”。代码生成URL中的回调“重定向uri”也应该与“重定向uri”相同在代币生成url中…绝对无价。非常感谢。@DeepNightTwo非常感谢,这非常完美。这也帮助了我。可笑的是,它不在文档中,我认为它必须是不同的东西,才能在该步骤后重定向到…我使用相同的uri,但它不起作用。顺便说一句,我正在使用重定向url和https,有问题吗?谢谢!我一直在努力解决这个问题。这是一个多么愚蠢的问题。你在哪里更改了重定向uri?我在Facebook上的应用程序页面上没有看到这个设置。非常感谢。我已经在办公桌上使劲敲了一会儿,试图解决这个问题。这个答案确实为我节省了30分钟的时间e、 可怕的弗鲁斯特