【问题标题】:Facebook PHP SDK not getting valid Access TokenFacebook PHP SDK 未获得有效的访问令牌
【发布时间】:2013-02-27 10:53:48
【问题描述】:

我一直按照开发者文档中的说明进行操作,但在阅读 PHP-SDK 教程时遇到了问题。

https://developers.facebook.com/docs/reference/php/facebook-api/

上面 URL 中的“通过 Graph API 获取用户的个人资料并打印他们的姓名”示例在尝试期间似乎中断了,据我所知,它收到了错误的访问令牌。

错误信息: 致命错误:未捕获的 OAuthException:必须使用活动访问令牌来查询有关当前用户的信息。在第 1254 行的 myURL/sdk/base_facebook.php 中抛出

我可以通过 FQL 查询成功获得有效的访问令牌,但仅在使用 PHP SDK 命令 $facebook->api('/me','GET') 时收到错误消息(如文档和教程所示)据我所知,它应该即时获得有效的访问令牌,但没有。

在本示例中我打算使用的其他地方是否缺少某些东西?我不确定我做错了什么。

[编辑显示代码]

<?php
  // Remember to copy files from the SDK's src/ directory to a
  // directory in your application on the server, such as php-sdk/
  require_once('php-sdk/facebook.php');

  $config = array(
    'appId' => 'MY_APP_ID',
    'secret' => 'MY_APP_SECRET',
  );

  $facebook = new Facebook($config);
  $user_id = $facebook->getUser();
?>
<html>
  <head></head>
  <body>

  <?php
    if($user_id) {

      // We have a user ID, so probably a logged in user.
      // If not, we'll get an exception, which we handle below.
      try {

        $user_profile = $facebook->api('/me','GET');
        echo "Name: " . $user_profile['name'];

      } catch(FacebookApiException $e) {
        // If the user is logged out, you can have a 
        // user ID even though the access token is invalid.
        // In this case, we'll get an exception, so we'll
        // just ask the user to login again here.
        $login_url = $facebook->getLoginUrl(); 
        echo 'Please <a href="' . $login_url . '">login.</a>';
        error_log($e->getType());
        error_log($e->getMessage());
      }   
    } else {

      // No user, print a link for the user to login
      $login_url = $facebook->getLoginUrl();
      echo 'Please <a href="' . $login_url . '">login.</a>';

    }

  ?>

  </body>
</html>

【问题讨论】:

  • 用户登录到你的应用了吗?您可以从 $facebook->getLoginUrl(); 获取一个 url 来让他们登录
  • 最重要的是,我是用户,我已登录 Facebook,并且该应用程序已经获得了我的帐户的权限,$user_id = $facebook-&gt;getUser(); 实际上得到了我的用户 ID 号,但这一切当它尝试获取访问令牌时发生故障。编辑我的条目以按原样显示我的代码。
  • 我在 catch 之后插入了echo "&lt;pre&gt;".$e."&lt;/pre&gt;"; 以显示上述错误消息。
  • 登录 Facebook 没问题 - 但服务器端应用程序不会注意到这一点,直到您通过登录流程获取新的访问令牌。
  • 此外,您的代码 $user_profile = $facebook-&gt;api('/me','GET');echo "Name: " . $user_profile['name']; 位于 if 块之外,如果用户不可用,这可能会显示您遇到的错误。

标签: php facebook-graph-api facebook-php-sdk


【解决方案1】:

好吧,没关系,出于某种奇怪的原因,在 24 小时没有任何更改后,此脚本正在运行。 感谢大家的所有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2012-05-17
    • 2014-10-08
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多