我正在尝试更改具有facebook登录功能的项目服务器。在旧服务器上,getUser()工作正常,但它不适用于新服务器。
OLD SERVER
php 5.4.36
apache 2.4.10
facebook sdk 3.2.3
新服务器
php 5.6.14
nginx 1.8.0
facebook sdk 3.2.3
我刚刚更改了服务器,并没有更改任何应用程序代码。 这是我的功能。这在旧服务器上运行良好,但不能在新服务器上运行。
function getFaceBookUserInfo(&$user){
$config = array('appId' => FACCEBOOK_API_KEY,
'secret' => FACEBOOK_API_SECRET);
$facebook = new Facebook($config);
if ($facebook->getUser()) { //this return 0
try {
$user = $facebook->api('/me', 'GET');
//here logic
我使用SDK跟踪代码,最终在下面的函数中破坏了。
facebook.php
/**
* {@inheritdoc}
*
* @see BaseFacebook::getPersistentData()
*/
protected function getPersistentData($key, $default = false) {
if (!in_array($key, self::$kSupportedKeys)) {
self::errorLog('Unsupported key passed to getPersistentData.');
return $default;
}
$session_var_name = $this->constructSessionVariableName($key);
return isset($_SESSION[$session_var_name]) ?
$_SESSION[$session_var_name] : $default; //this return $default
}
在这个函数中,$_SESSION[$session_var_name]
没有退出,所以返回$ default,最后getUser()返回0.
我搜索并发现了非常相似的问题,但没有一个答案解决了这个问题。