我有一个在共享服务器上运行的开发站点和生产站点。我使用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) {
}
}
答案 0 :(得分:0)
我认为getUser只是从cookie中提取数据,所以尝试添加
'cookie'=>真正, 新的Facebook电话,例如
new Facebook(array(
'appId' => $facebook_appid,
'secret' => $fb_secret,
'scope' => 'email',
'cookie' => true,
如果您通过直接转到iframe来测试facebook chrome之外的应用,请确保网址与您在应用设置中放入画布网址的内容匹配,例如如果前面有一个www。