1

私はFacebookSDKを使用してPHPでFacebookアプリケーションを作成しています。
私のコードの重要な部分は次のとおりです。

    $facebook = new Facebook(array(
                'appId' => $ApplicationID,
                'secret' => $ApplicationSecret,
                'cookie' => true, // enable optional cookie support  
            ));
    $user = $facebook->getUser();

              $post = $facebook->api('/' . $user . '/feed', 'post', array(
              stuff
      ));
                $_SESSION['finish'] = false;
                $_SESSION['inside'] = 'yes';
                $_SESSION['uid'] = $user;
                $token = $facebook->getAccessToken();
                echo 'Access token: ' .$token;
                $_SESSION['friends'] = $facebook->api('/me/friends?access_token'.$token);

echoアクセストークンを使用していることがわかります。
最初はaccess_token、クエリにを追加していません。確認のために追加しただけです。
問題は、(を含む)最後のlikeが/me/friends/例外をスローすることです。

OAuthException: An active access token must be used to query information about the current user.

ログインfeed post して作業しましたが(壁を確認しましたが、そこにあります)。次に、私のtry catchブロックは、次のようにログインリンクにリダイレクトすることで例外を処理します。

catch(Exception $e) {

            $login_url_params = array(
            'scope' => 'stuff',
            'fbconnect' => 1,
            'redirect_uri' => $ApplicationURL
        );
        $login_url = $facebook->getLoginUrl($login_url_params);

        //redirect to the login URL on facebook
        echo ("EXCPETION! " . $e . "<script> top.location.href='" . $login_url . "'</script>");
        exit();
        }

例外を記述しているコードは、明らかにデバッグ目的のみです。
さて、私が初めてアプリケーションを実行するとき、同様のコードがif(!$user)条件によって実行されます。それからそれは私の許可を求め、私はそれを与えます。次に、再び、アクセストークンが無効であると表示されます(ただし、私の壁に投稿されます)。
access_tokensを比較したことに注意してください。アプリケーションを削除してすべてをやり直した後でも、同じままでした。

これは非常に厄介な動作であり、私はそれを理解できません。誰かがこれに光を当ててくれませんか?
編集:いくつかの奇妙な理由で、別のユーザーに行った後でもトークンは変更されません。しかし、壁への投稿はまだ行われています...(そして友達リストにアクセスするときにスローされる例外)

4

1 に答える 1

1

奇妙な理由で、別のユーザーに移動してもトークンは変更されません。しかし、壁への投稿はまだ行われています... (そして、友達リストにアクセスするときに例外がスローされます)

現在ログインしているユーザーが実際にはいないように聞こえるので、SDK はアプリアクセス トークンを使用しているだけです。これは、別のより「具体的な」トークンを受け取る前に常に使用する既定のトークンです。

アクセス トークンの形式は? または のようなものですyour_app_id|your_app_secretyour_app_id|some_random_characters? アプリ ID で始まっている場合、最も確実なのはアプリアクセス トークンです。

于 2012-08-09T12:30:49.653 に答える