php - 如何通过 PHP SDK 使用访问 token 并使用 fql 检索 user_activities 参数?

标签 php facebook facebook-fql facebook-php-sdk

我想知道如何使用 PHP SDK 中的 getAccessToken() 获取的访问 token 以下是我尝试显示用户电子邮件 ID 以及用户事件的代码片段: 当我运行此代码时,电子邮件和用户事件为空,如何修复此问题?

      <?php



    require '/home/vespanve/public_html/facebook-php-sdk/src/facebook.php';

    $facebook = new Facebook(array(
      'appId'  => '39653698mmmmm448',
      'secret' => 'd7681299469mmmmmmmmmmmmm',
    ));

    $config = array(
        'appId' => '39653698mmmmm448',
        'secret' => 'd7681299469mmmmmmmmmmmmm',
      );

      $facebook = new Facebook($config);
      $user_id = $facebook->getUser();
    $access_token = $facebook->getAccessToken();
    $facebook->setAccessToken($access_token);

    ?>
    <html>
      <head></head>
      <body>

      <?
        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 {

            $fql = 'SELECT name from user where uid = ' . $user_id;
        $fqlmail = 'SELECT email from user where uid = ' . $user_id;
        $fqlact = 'SELECT user_activities from user where uid = ' . $user_id;
            $ret_obj = $facebook->api(array(
                                       'method' => 'fql.query',
                                       'query' => $fql,
                                     ));
        $ret_obj2 = $facebook->api(array(
                                       'method' => 'fql.query',
                      'access_token' => $cookie['access_token'],
                                      'query' => $fqlmail,
                                     ));
        $ret_obj3 = $facebook->api(array(
                                       'method' => 'fql.query',
                      'access_token' => $cookie['access_token'],
                                      'query' => $fqlact,
                                     ));

            // FQL queries return the results in an array, so we have
            //  to get the user's name from the first element in the array.
            echo '<pre>Name: ' . $ret_obj[0]['name'] . '</pre>';
        echo '<pre>Email: ' . $ret_obj2[0]['email'] . '</pre>';
        echo '<pre>Activities: ' . $ret_obj3[0]['user_activities'] . '</pre>';
        $facebook->destroySession();



          } 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, so print a link for the user to login
          $login_url = $facebook->getLoginUrl();
          echo 'Please <a href="' . $login_url . '">login.</a>';

        }
    ?>

      </body>
    </html>

最佳答案

您需要请求扩展权限:

$params = array(
  'scope' => 'email, user_activities',
  'redirect_uri' => 'https://www.myapp.com/post_login_page'
);

$loginUrl = $facebook->getLoginUrl($params);

有关这方面的更多信息,您可以在此处查看:

http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/

此处的权限:

http://developers.facebook.com/docs/reference/api/permissions/

关于php - 如何通过 PHP SDK 使用访问 token 并使用 fql 检索 user_activities 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9631352/

相关文章:

javascript - 使用 javascript 或 jQuery 更新两个复选框选择的价格

javascript - Facebook 评论插件字体颜色

php - 如何获取对我的页面点赞的用户 ID?

objective-c - 多个 FQL 查询合二为一

facebook - ASP.NET MVC5 OWIN Facebook 身份验证突然不起作用

facebook - FB 实时 API 不/不一致地通知某些连接(音乐、电影、书籍、电视)

php - 具有自定义 docker 镜像 SSH 的 Azure Web 应用程序

javascript - 无法将数据从一个表复制到另一个表

php - 如何在 Yii 表达式中获取动态类名?

facebook - file_get_contents 不适用于 facebook graph api