Как использовать токен доступа с PHP SDK и получить параметр user_activities с помощью fql? - PullRequest
2 голосов
/ 09 марта 2012

Мне было интересно, как использовать токен доступа, полученный getAccessToken () в PHP SDK. Ниже приведен мой фрагмент кода, в котором я пытаюсь отобразить идентификатор электронной почты пользователя, а также действия пользователя.Я это исправлю?

<code>      <?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'] . '
';echo '
Email: ' . $ret_obj2[0]['email'] . '
';echo '
Activities: ' . $ret_obj3[0]['user_activities'] . '
';$ Facebook-> destroySession ();} catch (FacebookApiException $ e) {// Если пользователь вышел из системы, вы можете иметь // идентификатор пользователя, даже если токен доступа недействителен.// В этом случае мы получим исключение, поэтому // просто попросим пользователя снова войти в систему здесь.$ login_url = $ facebook-> getLoginUrl ();echo 'Пожалуйста логин. ';error_log ($ e-> GetType ());error_log ($ e-> GetMessage ());}} else {// Нет пользователя, поэтому выведите для него ссылку для входа в систему $ login_url = $ facebook-> getLoginUrl ();echo 'Пожалуйста логин. ';}?>

1 Ответ

3 голосов
/ 09 марта 2012

Вам необходимо запросить расширенные разрешения:

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

...