0

ユーザーがアプリケーションをインストールしたかどうかを確認しようとしています。フローは次のとおりです。

    1. Check whether has installed or authorize my app 
    2. If yes, then direct user to play my app directly
       If no, then direct user to see welcoming page to read term of use and privacy.

許可を確認するためのアクセストークンがないようです。以下のエラーが表示されます。

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

私のコードはこんな感じです。また、$ access_tokenをエコーし​​て、アクセストークンを受け取ったかどうかを確認します。はい、コードを取得しました。しかし、どういうわけか私はまだエラーが発生します。

require_once('src/facebook.php');

$app_id = "APP_ID";
$app_secret = "APP_secret";

// Init facebook api.
$facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => false,
));

$access_token = $facebook->getAccessToken();
//echo $access_token;

$permissions = $facebook->api("/me/permissions", $access_token);
if( array_key_exists('publish_stream', $permissions['data'][0]) ) {
   // Permission is granted!
   echo "App has been installed";
   //then redirect to content page
} else {
   echo "App has not been installed";
   //then redirect user to welcoming page and let user read "term of use" and "privasy"
}

助けてください。

4

1 に答える 1

1

$access_token関数にを渡す必要はありませんapi()。次のようにAPIを呼び出してみてください。

$permissions = $facebook->api("/me/permissions");

それでも問題が解決しない場合は、FacebookSDKを最新バージョンにアップグレードする必要があります。access_tokenまた、 APIにユーザーの権限を照会する前に、が実際に返されるかどうかを確認する価値があります。ユーザーがまだログインしておらず、アプリを承認している場合、コードは失敗します。コードを次のように変更します。

$access_token = $facebook->getAccessToken();

if ( $access_token ) {
    $permissions = $facebook->api( "/me/permissions" );
    if( array_key_exists('publish_stream', $permissions['data'][0]) ) {
       // Permission is granted!
       echo "App has been installed";
       //then redirect to content page
    } else {
       echo "App has not been installed";
       //then redirect user to welcoming page and let user read "term of use" and "privasy"
    }
}
于 2012-05-24T11:49:34.993 に答える