1

以下のコードでの認証に少し問題があります。

ユーザーが Facebook でアプリにログイン/認証するための loginUrl を生成するページがあります。

<?php
    $loginUrl = $facebook->getLoginUrl(array('scope' => 'publish_stream, read_friendlists, user_birthday', 'redirect_uri' => 'complete.php'));
?>
<div id="connect_facebook">
    <a class="button" href="<?php echo $loginUrl; ?>">Connect to Facebook</a>
</div>

私のcomplete.phpには、次のことを行うスクリプトがあります。

<script>
$(document).ready(function() {
    pop_db();
});

function pop_db() {
    $.post(
        "pop_db.php",
        function(data) {
            alert(data);
        }
    );
}
</script>

そして、私の pop_db.php ファイルは次のようになります。

<?php
require_once('constants.php');

$response = array();

$user = $facebook->getUser();

if($user) {
    try {
        // make API calls
        $response['code'] = "success";
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
} else {
    $response['code'] = "failure";
    $response['userID'] = $facebook->getUser();
    $response['access_token'] = $facebook->getAccessToken();
}

echo json_encode($response);

?>

また、constants.php には Facebook オブジェクトの秘密情報があります (また、$facebook オブジェクトも作成されます)。

私の問題は、リダイレクトとして "complete.php" を使用してこれを行い、この jQuery を使用して非同期で API 呼び出しを実行しようとすると、userID = 0 (ユーザーがログインしていないことを意味します) という応答が返されることです。有効なアクセストークンを取得したようです。「complete.php」の代わりに「pop_db.php」をリダイレクトとして使用し、したがって非同期呼び出しを使用しない場合、すべて正常に動作します。

何か不足していますか?ユーザーがログインしていないというメッセージが表示されるのはなぜですか?

どんな提案でも大歓迎です。

4

1 に答える 1

0

Facebook を介して自分の Web サイトにログインする際に問題が発生したり、Facebook ログインを Web サイトに統合したりするには、指定されたリンク「http://developers.facebook.com/docs/howtos/login/server-side-login/#step2」に従ってください。これは、問題を確実に解決できる非常に優れたリンクです。

ありがとう。バナラータ。

"

于 2012-12-26T16:54:57.753 に答える