2012-05-23 3 views
0

Я пытаюсь проверить, установлено ли пользователем мое приложение или нет. Поток следующий:Попробуйте проверить, установлено ли пользователем мое приложение или нет. Но получить Uncaught OAuthException (токен доступа)

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

Просьба помочь.

ответ

1

Не нужно передавать в $access_token в функцию api(). Попробуйте вызова API, как это:

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

Если это не работает, вам, возможно, потребуется обновить Facebook SDK до последней версии. Кроме того, стоит проверить, действительно ли возвращается 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" 
    } 
} 
+0

Благодарим за ответ. Я думаю, что я на последнем SDK. Но позвольте мне сначала попробовать ваш код, я продолжу обновление. Раньше я старался не пропускать $ access_token в api. Это не работает, поэтому я пытаюсь включить это. – Nick

Смежные вопросы