0

我已经阅读了大量关于此的主题,但要么没有答案,要么给出的答案对我不起作用。

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

该代码完美地要求用户授权......完全按照我的意愿工作,但是当应用程序重新加载时,$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 调用上面的代码。

4

1 回答 1

0

好的,我已经整理好了。代码确实有效,只是我通过 ajax 运行的事实就是问题所在。一旦我将它用作正确的页面加载而不是 ajax 调用,它就可以正常工作:)

于 2012-11-30T17:19:06.660 回答