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' の 2 つのクエリ文字列パラメーターがあります。関連性はありますか?私は彼らと何かをすべきですか?私が知る限り、最新の Facebook SDK をダウンロードしたので、これを機能させる方法がわかりません。

注: AJAX 経由で上記のコードを呼び出しています。

4

1 に答える 1

0

わかりました、これを並べ替えました。コードは機能しますが、問題は ajax 経由で実行しているという事実だけです。ajax呼び出しではなく、適切なページロードとして使用すると、すべて機能します:)

于 2012-11-30T17:19:06.660 に答える