$ facebook-> getUser()返回0

时间:2012-11-29 18:39:07

标签: facebook

我已经阅读了大量的线程,但是没有答案或给出的答案对我不起作用。

我有以下代码要求授权我的Facebook应用程序,如果他们尚未授权。一旦获得授权,它应该重定向到同一页面,但这次不需要请求授权。

代码完美地要求用户授权...完全按照我的意愿工作,但是当app重新加载时,$ user始终设置为0.

这是我的代码:

//Get PHP SDK
require_once 'facebook.php';
// Create our Application instance.
$facebook = new Facebook(array(
    'appId' => 'xxxxxxxxxxxxxxx',
    'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'cookie' => true
));
    // Get User ID
    $user = $facebook->getUser();

    if ($user) {
        try {
            $user_profile = $facebook->api('/me');
            echo "logged in and authenticated";
        } catch (FacebookApiException $e) {
            error_log($e);
            $user = null;
        }
    }

    // Ask for authorisation
    if(!$user) {
        $login_url = $facebook->getLoginUrl(
            array(
                'canvas' => 1,
                'fbconnect' => 0,
                'scope' => 'email,publish_stream',
                'redirect_uri' => 'myurl - same as Site URL in app basic settings'
            )
        );
        echo "<script> top.location.href='" . $login_url . "'</script>";
    }


}

用户授权应用后,它不会再次请求授权,所以我假设授权有效,但为什么$facebook->getUser()会返回0?

重定向后的URL有两个查询字符串参数 - “state”和“code”。它们相关吗?我应该和他们一起做点什么吗?据我所知,我已经下载了最新的Facebook SDK,所以我对如何实现这一点感到茫然。

注意:我通过AJAX调用上面的代码。

1 个答案:

答案 0 :(得分:0)

好的,我已对此进行了排序。 代码确实有效,这就是我通过ajax运行的问题。 一旦我用它作为正确的页面加载而不是ajax调用它一切正常:)