迁移后,Facebook signed_request不会被退回

时间:2013-12-31 21:25:42

标签: php facebook facebook-graph-api amazon-ec2

我最近将我们的网站从其他主机迁移到了Amazon EC2。在旧服务器上,我们的Facebook登录工作正常,但它在EC2上失败了。我已经做了一些挖掘,看起来它失败了,因为没有为Facebook传递signed_request变量的值。我在返回页面上完成了print_r($ _ REQUEST),而Facebook传递的唯一内容就是URL本身的代码和状态。 POST中没什么。

我确实注意到我的应用中定义的网站网址最后没有斜线,根据此论坛中的一些评论,这似乎有问题,但这没有帮助。其他答案来自几年前,似乎已经过时,因为我找不到他们所指的东西。

我也尝试将我的EC2 IP添加到我应用的白名单中,但这也无济于事。

这是我目前的代码:

if(!session_start())session_start();

require_once("facebook.php");
require_once("config.php");

$facebook = new Facebook(array(  
  'appId'  => constant("FB_CONSUMER_KEY"),  
  'secret' => constant("FB_CONSUMER_SECRET"),  
  'cookie' => false  
));  

$FbId = intval($facebook->getUser());
if($FbId != 0) { 
   ...
} else {  
// log in to FB
    $login_url = $facebook->getLoginUrl(array(  
    'scope' => 'email,user_likes,publish_stream',  
    'next' => '<return_page>',  
    'cancel_url' => '<cancel_page>'  
    ));  

    exit;
}  
即使在登录Facebook之后,$ FbId仍然以0值返回。一些挖掘表明这是因为用户永远不会被设置在getUserFromAvailableData函数中,因为$ _REQUEST ['signed_request']没有值。

我已经尝试过这两个已登录Facebook并且未登录,但在任何一种情况下都不会返回$ _REQUEST ['signed_request']。

我在这里看到一些帖子表明,旧的Facebook应用程序似乎有某种格式,他们继续工作直到他们迁移,或者另一个新的应用程序就像它被创建一样。这可能就是这种情况吗? 任何帮助,将不胜感激。 谢谢,

0 个答案:

没有答案