Nick
Nick

Reputation: 315

Try to check whether user has installed my app or not. But get Uncaught OAuthException (access token)

I'm trying to check whether user has installed my application or not. The flow is as follow;

    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.

I seems like i dont have access token to check the permission. It show below error.

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

My code is like this. I also echo $access_token to see whether i did receive the access token or not. Yes, i did get the code. But somehow i still get the error.

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"
}

Please help.

Upvotes: 0

Views: 2459

Answers (1)

Niraj Shah
Niraj Shah

Reputation: 15457

You don't need to pass in the $access_token into the api() function. Try calling the API like this:

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

If that doesn't work, you may need to upgrade the Facebook SDK to the latest version. Also, it's worth checking if the access_token is actually returned before querying the API for the user's permissions. Your code will fail if the user isn't already logged in and has approved the app. Change the code to something like:

$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"
    }
}

Upvotes: 1

Related Questions