【问题标题】:How to use access token with PHP SDK and retrieve user_activities parameter using fql?如何在 PHP SDK 中使用访问令牌并使用 fql 检索 user_activities 参数?
【发布时间】:2012-03-09 09:03:32
【问题描述】:

我想知道如何在 PHP SDK 中使用 getAccessToken() 获得的访问令牌 以下是我的代码 sn-p 尝试显示用户电子邮件 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>

【问题讨论】:

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


    【解决方案1】:

    您需要申请扩展权限:

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

    【讨论】:

    • 嘿,正在检索电子邮件,但是当我尝试打印 user_activities 时,应用程序没有给出任何输出,只要求身份验证并停止工作。
    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 2021-02-04
    • 2020-12-17
    • 2013-03-30
    相关资源
    最近更新 更多