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

问题描述:

我有一个开发站点和生产站点在共享服务器上运行。我用fb_loginUrl和下面的代码工作。

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

问题应该在新应用程序设置的某个地方,但它们与名称和地址更新的旧的应用程序相同,并且我尝试了可以​​考虑的更改,包括在返回网址。我开始怀疑FB是否将一些不可见的默认值应用于新注册的应用程序(并非完全偏执 - Web仪表板上的默认设置不同,例如“deprecate 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) { 
    } 
} 
+0

在您移动网站之后您是否可以使用与之前网址相同的网址访问新网站? – alexl 2012-02-12 02:46:40

+0

没有,不同的网址和不同的FB应用程序ID。你给了我一个主意。我尝试在新的域名上使用旧的FB应用程序,它的工作原理!所以这给了我一个解决方法。但我仍然不知道为什么会发生这种情况,因为旧应用程序现在具有与新应用程序完全相同的设置。 – malcanso 2012-02-12 05:49:12

+0

在每个浏览器中都有这个问题吗? – yacon 2013-01-28 14:38:55

我觉得刚才的getUser就会从cookie数据,所以尽量增加

'饼干'=>真实, 到新的Facebook用语,如

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

如果你直接转到IFRAME测试的Facebook铬之外的应用程序,确保URL匹配给你放什么在画布URL在应用程序设置,例如如果前面有www的话。

+0

或者可能 http://developers.facebook.com/bugs/223499947703278 – alexl 2012-02-12 08:10:20

+0

那么,代码正在工作,与不同的FB appID。所以问题出现在特定应用程序的某处。 Facebook肯定会在cookie中存储一堆信息,但是当我几天前尝试添加该行时,它并没有什么不同,我想我听说现在的SDK并不需要它。 – malcanso 2012-02-13 00:38:37