Facebook SDK-PHP - 调用getUser()时始终返回0

时间:2014-02-11 09:26:47

标签: php facebook sdk

每次调用getUser()方法时,PHP Facebook-SDK都会为我返回0。我正在寻找一个不使用JS的解决方案。那就是我到目前为止。

$user = null;
    $facebook = new Facebook(array(
            'appId'  => '140739xxxx46068',
            'secret' => '46dff7362e86xxxxx06fe9050a86a22',
            'cookie' => true,
    ));

    // Get User ID
    $login = $facebook->getLoginUrl(array("scope" => "publish_stream,manage_pages"));
    $user = $facebook->getUser();

    echo $facebook->getUser()."//".$facebook->getAccessToken();

    if ($user <> '0' && $user <> '')
    {
        try {
            //header("location:".$login);
        }
        catch (FacebookApiException $e)
        {
            echo $e->getType();
            echo $e->getMessage();

        }

1 个答案:

答案 0 :(得分:0)

想一想。您将loginURL保存到$login var中,然后尝试检索用户数据。

那永远不会奏效。您没有提示用户使用登录URL,因此他没有授予访问权限。用户需要手动访问URL并确认权限。之后,您可以检索用户数据。

让我们总结一下:

  1. 初始化Facebook SDK
  2. 检查用户是否已经允许访问(getUser()对此有用)
  3. 如果是,请按照惯例进行操作。您的用户已授予访问权限。
  4. 如果不是(getUser()为0),请告知用户访问您通过getLoginUrl()获得的网址
  5. 确保在redirect_uri传递的数组中加入4.键 你可以重定向到同一个uri,因为我们正在检查我们是否检索用户 数据或提示用户登录
  6. 允许访问(或不允许)后,您的用户将被重定向到Facebook redirect_uri
  7. 如果在请求访问时一切正常,您应该在第3步

  8. 您遇到的逻辑缺陷是,您认为getLoginURL()会自动授予您访问用户数据的权限。但事实并非如此,您需要用户访问该URL,以便他们可以自行授予访问权限。