尝试检查用户是否安装了我的应用程序。但是获取Uncaught OAuthException(访问令牌)

时间:2012-05-23 14:29:39

标签: facebook facebook-graph-api oauth access-token

我正在尝试检查用户是否安装了我的应用程序。流程如下;

    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 个答案:

答案 0 :(得分:1)

您无需将$access_token传入api()功能。尝试像这样调用API:

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

如果不起作用,您可能需要将Facebook SDK升级到最新版本。此外,在查询API以获取用户权限之前,有必要检查access_token是否实际返回。如果用户尚未登录并已批准该应用,则您的代码将失败。将代码更改为:

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