Facebook的。 致命错误:未捕获OAuthException:活性访问令牌必须用于查询有关

2019-08-08 07:06发布

在Facebook上与我的应用程序正常工作我的应用程序的管理员acount,但与其他帐户,我得到错误: Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. 我与其他应用程序(发布用户的墙上的文字)以前出现过此问题,但在我加入固定的$user = $facebook->getUser(); 什么是错在这里? 我已经加入offline_access许可......请帮助我,如果你可以,非常感谢你。

<?php
    require_once('images/Facebook.php');

      $facebook = new Facebook(array(
        'appId'  => '456080124457246',
        'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
      ));
      $user_profile = $facebook->api('/me','GET');
    $accessToken = $facebook->getAccessToken();

      # Get User ID
      $user = $facebook->getUser();
      $facebook->setAccessToken($accessToken);
      $facebook->api(456080124457246);


     if ($user) {
        try {

      # Photo Caption
      $photoCaption = $user_profile['name'] . ' patarimų plaukams sužinojo čia http://goo.gl/otwhf';

      # Absolute Path to your image.
      $imageUrl = 'http://padekime.wu.lt/plaukai/images/PlaukaiNeuzvedus.jpg'; // Example URL

      # Post Data for Photos API
      $post_data = array(
          'message' => $photoCaption,
          'url' => $imageUrl

      );

          $apiResponse = $facebook->api('/me/photos', 'POST', $post_data);

      } catch (FacebookApiException $e) {
        error_log($e);
      }
    } else {
        $loginUrl = $facebook->getLoginUrl( array(
            'scope' => 'publish_stream,photo_upload'
        ));
        echo("<script>top.location.href = '" . $loginUrl . "';</script>");
      }
    ?>

Answer 1:

在这种情况下,它甚至没有进入您的$ facebook->的getUser()调用 - 它只要做到了这行抛出一个异常:

$user_profile = $facebook->api('/me','GET');

$ facebook-> API()是一个有点棘手的事情,因为用它立即抛出一个异常,如果它不知道是谁“/我”是工作...即使你稍后尝试修复它。

诀窍,我认为,是包装在一个try ... catch块整个事情。 像这样:

<?php

require_once('images/facebook.php');

$facebook = new Facebook(array(
  'appId'  => '456080124457246',
  'secret' => 'xxxxx',
));

try {
  $user_profile = $facebook->api('/me','GET');
  # Get User ID
  $user = $facebook->getUser();

 if ($user) {
    try {
  # Photo Caption
  $photoCaption = $user_profile['name'] . ' patarimų plaukams sužinojo čia http://goo.gl/otwhf';

  # Absolute Path to your image.
  $imageUrl = 'http://padekime.wu.lt/plaukai/images/PlaukaiNeuzvedus.jpg'; // Example URL

  # Post Data for Photos API
  $post_data = array(
      'message' => $photoCaption,
      'url' => $imageUrl

  );

  $apiResponse = $facebook->api('/me/photos', 'POST', $post_data);

  } catch (FacebookApiException $e) {
    error_log($e);
  }
} else {
    $loginUrl = $facebook->getLoginUrl( array(
        'scope' => 'publish_stream,photo_upload'
    ));
    echo("<script>top.location.href = '" . $loginUrl . "';</script>");
  }      

} catch (Exception $e) {
    $loginUrl = $facebook->getLoginUrl( array(
        'scope' => 'publish_stream,photo_upload'
    ));
    echo("<script>top.location.href = '" . $loginUrl . "';</script>");
}

?>

这将几乎立即将用户重定向到登录的网址,然后再回来与拖车的一切。 您没有设置的accessToken与此设置。

这实际上可能会不必要地重复一些功能,但希望它的东西开始。

顺便说一句,什么是值得的offline_access权限被淘汰。



Answer 2:

我停止使用“我”关键字来获取登录的用户的个人资料。 而不是$ facebook-> API( '/我', 'GET'),I改变为facebook- $> API( '/用户的Facebook的ID', 'GET');

这减少了需要做第二次尝试抓



Answer 3:

如果你这样做

如果(!空($用户)){}

这应该有助于...



文章来源: Facebook. Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user