Php 同样的facebook问题。。。OAutheException:必须使用活动访问令牌来查询有关当前用户的信息

Php 同样的facebook问题。。。OAutheException:必须使用活动访问令牌来查询有关当前用户的信息,php,facebook,api,Php,Facebook,Api,所以这很好用。。。但是当我刷新页面两次(或者快速单击包含此脚本的两个页面)时,会出现此错误 OAutheException:必须使用活动访问令牌来查询有关当前用户的信息。 有什么想法吗 <?php $app_id = '***************'; $app_secret = '**************'; $app_namespace = '****************'; $app_url = 'http://apps.facebook.com/' .

所以这很好用。。。但是当我刷新页面两次(或者快速单击包含此脚本的两个页面)时,会出现此错误 OAutheException:必须使用活动访问令牌来查询有关当前用户的信息。 有什么想法吗

<?php

  $app_id = '***************';
  $app_secret = '**************';
  $app_namespace = '****************';

  $app_url = 'http://apps.facebook.com/' . $app_namespace . '/';
  $scope = 'email,publish_actions';

  // Init the Facebook SDK
   $facebook = new Facebook(array(
     'appId'  => $app_id,
     'secret' => $app_secret,
   ));

   // Get the current user
   $user = $facebook->getUser();

   // If the user has not installed the app, redirect them to the Login Dialog

   if (!$user) {
     $loginUrl = $facebook->getLoginUrl(array(
       'scope' => $scope,
       'redirect_uri' => $app_url,
     ));

     print('<script> top.location.href=\'' . $loginUrl . '\'</script>');
   }

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me', 'POST');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
//<img src="https://graph.facebook.com/?php echo $user; ?/picture">
//?php print_r($user_profile); ?
?>

我个人觉得自己管理
访问令牌更容易。Facebook的Graph API通过要求传入
access\u令牌
来保护受保护的端点。PHPSDK将这一点抽象出来,但我对Facebook处理信息从来都不满意,因为有时候它根本不起作用。这并不是说这个库不好,只是说我没有正确地使用它。记住这个警告

看起来您正在使用Facebook画布应用程序。当用户首次成功进行身份验证时,Facebook将在
$\u GET
中发送一个
访问令牌。此时,您应该将其保存到数据库中,因为该访问令牌可以使用3个月左右

此时,从那时起,您可以在调用参数中传入
access\u令牌

try {
    $user_profile = $facebook->api('/me', 'POST', array(
        "access_token" => ''    // access token goes here
    ));
} catch (FacebookApiException $e) {
    // error handling
}
考虑到Facebook返回的错误是您需要访问令牌才能调用
/me
资源,它看起来像
$Facebook->getUser()正在返回某些内容。您可能需要再次检查它是什么


当我在这里的时候,你用的是这样的逻辑:

if (!conditional) {
    // do something
}
if (conditional) {
    // do something else
}
令人困惑。使用
else

if (conditional) {
    // do something
} else {
    // do something else
}

我个人觉得自己管理
access\u令牌更容易。Facebook的Graph API通过要求传入
access\u令牌
来保护受保护的端点。PHPSDK将这一点抽象出来,但我对Facebook处理信息从来都不满意,因为有时候它根本不起作用。这并不是说这个库不好,只是说我没有正确地使用它。记住这个警告

看起来您正在使用Facebook画布应用程序。当用户首次成功进行身份验证时,Facebook将在
$\u GET
中发送一个
访问令牌。此时,您应该将其保存到数据库中,因为该访问令牌可以使用3个月左右

此时,从那时起,您可以在调用参数中传入
access\u令牌

try {
    $user_profile = $facebook->api('/me', 'POST', array(
        "access_token" => ''    // access token goes here
    ));
} catch (FacebookApiException $e) {
    // error handling
}
考虑到Facebook返回的错误是您需要访问令牌才能调用
/me
资源,它看起来像
$Facebook->getUser()正在返回某些内容。您可能需要再次检查它是什么


当我在这里的时候,你用的是这样的逻辑:

if (!conditional) {
    // do something
}
if (conditional) {
    // do something else
}
令人困惑。使用
else

if (conditional) {
    // do something
} else {
    // do something else
}