$ facebook->的getUser();仍然返回0

时间:2012-02-12 01:20:54

标签: php facebook

我有一个在共享服务器上运行的开发站点和生产站点。我使用fb_loginUrl和以下代码,这是有效的。

我正在将生产站点移动到新域,也在共享服务器上。我复制了整个代码,包括PHP SDK。我使用了新域名的appID和秘密。在新域上,fb_loginUrl显示登录对话框(如果需要),正确调用FB并接收GET回调。但是,即使用户已在计算机上登录,用户也始终为0。没有CSRF错误。如果我继续绕过无限循环,它会第二次抛出CSRF错误,之后每隔一秒抛出一次。

问题应该出现在新应用程序的设置中,但是它们与更新了名称和地址的旧版本相同,我尝试了我能想到的更改,包括返回的斜杠网址。我开始怀疑FB是否对新注册的应用程序应用了一些不同的隐形默认值(并非完全偏执 - Web仪表板上的默认设置不同,例如“弃用offline_access”的值 - 但我已将所有内容与我的旧设置。)

为什么在不同的域中这种情况会有所不同?

require_once '../facebook/facebook.php';
if(!isset($facebook)) $facebook = new Facebook(array(
  'appId'  => $facebook_appid,
  'secret' => $fb_secret,
  'scope' => 'email'
));

$fb_user = $facebook->getUser();
echo ' USER: ' . $fb_user;

if ($fb_user) {
  try {
    $fb_user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
  }
}

1 个答案:

答案 0 :(得分:0)

我认为getUser只是从cookie中提取数据,所以尝试添加

'cookie'=>真正, 新的Facebook电话,例如

 new Facebook(array(
   'appId'  => $facebook_appid,
   'secret' => $fb_secret,
   'scope' => 'email',
   'cookie' => true, 

如果您通过直接转到iframe来测试facebook chrome之外的应用,请确保网址与您在应用设置中放入画布网址的内容匹配,例如如果前面有一个www。