$ facebook-> getUser()始终返回0

时间:2011-09-14 13:56:18

标签: facebook authentication

  

可能重复:
  Why is Facebook PHP SDK getUser always returning 0?

如果未登录或需要权限,我使用以下代码验证Facebook使用并将其重定向到登录页面。问题是getUser()总是返回0,导致代码卡在重定向循环中。有什么想法吗?

include_once("facebook.php");

$app_id = 'xxxxxxxxxxxx';
$app_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

// initialize facebook
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
));

$user = $facebook->getUser();
echo $user;
if ($user) {
 try {
    $fbme = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
else
{
$loginUrl = $facebook->getLoginUrl(array('scope' => 'email'));
header('Location: '.$loginUrl);
}

2 个答案:

答案 0 :(得分:3)

经过几天的搜索后,我发现在使用Facebook API时我并没有添加“代码”键值。系统需要它才能验证

当您使用API​​函数$ facebook-> getLoginUrl();它会将您带到一个登录页面(当您正确进行身份验证时)只需返回您自己的网站,并在导航栏中输入code =“x”参数。因此,在实例化Facebook对象时,您只需使用获取请求即可获取此信息。

当您的网页重新加载Facebook API时,请确保其中一个键值为 'code'=> $ _GET [ '代码'], 排序..

非常生气,我必须自己解决这个问题。看看这里的getLoginUrl()文档http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/,你会发现它没有指明它返回的内容,只是它“授权”了应用程序无论这意味着什么。

此处在http://developers.facebook.com/docs/reference/php/中找到的PHP API文档的主页上,它指出所需的最小参数数量是app secret和appID。如果是这种情况,那么为什么添加代码会对我的问题进行排序?

如果我在胡说八道,请回复。我想知道我的方式的错误:)。

答案 1 :(得分:1)

这不是sdk相关问题,SDK(3.1)运行良好。如果配置错误,如果_REQUEST类似全局因http服务器丢弃,则getUser()和PHP-SDK将无声地失败。我使用了错误配置的nginx并在跟踪代码后~3小时通过vhost配置更改解决了这个问题。