我在创建一个简单的FB应用程序时遇到了麻烦。
我是在localhost上开发的,它运行得很好。整个想法是有一个桌面应用程序,它启动带有返回URL的Facebook登录页面。一旦用户成功登录,他就会被发送到该返回URL以显示“感谢记录”的消息。
当我在localhost上尝试时(通过将我的应用程序域和Facebook上的站点URL设置为localhost),它可以正常运行。但是现在我把php移到了web服务器上,我的$ user var永远不会被填充。 (是的,我更新了app域并在facebook上返回url指向我的域名。)
我开始调查并追踪我认为可能是错误的内容。在base_facebook.php上有这个 getUserFromAvailableData()方法,下面是代码部分:(回声是我的btw)
$access_token = $this->getAccessToken();
echo "Access Token: ".$access_token."<br/>";
echo $this->getApplicationAccessToken()."<br/>";
if ($access_token && $access_token != $this->getApplicationAccessToken() && !($user && $persisted_access_token == $access_token)) {
echo "This doesn't get printed at all.";
$user = $this->getUserFromAccessToken();
if ($user) {
$this->setPersistentData('user_id', $user);
} else {
$this->clearAllPersistentData();
}
}
return $user;
正如你所看到的,有一个永远不会被打印的回声,我设法发现getAccessToken和getApplicationAccessToken返回完全相同的字符串,这就是我的$ user变空的原因。
所以我的问题是:为什么这可以在localhost上工作,但不能在我的网络服务器上工作?我做错了什么?
谢谢!
答案 0 :(得分:0)
如果您想在真实服务器中使用您的代码,您需要使用您的域名创建一个Facebook应用程序,您将使用它来托管浏览PHP脚本并将您的应用程序ID和您的应用程序密码放入:
$config = array();
$config['appId'] = 'YOUR_APP_ID';
$config['secret'] = 'YOUR_APP_SECRET';
$facebook = new Facebook($config);
希望这会有所帮助