如何使用PHP SDK访问令牌并使用fql检索user_activities参数?

时间:2012-03-09 09:03:32

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

我想知道如何在PHP SDK中使用getAccessToken()获取的访问令牌 以下是我的代码段,试图显示用户电子邮件ID以及用户活动: 当我运行此代码时,emAIL和USER ACTIVITIES是空白的,我该如何解决这个问题?

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

1 个答案:

答案 0 :(得分:3)

您需要申请扩展权限:

$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/