Получить друзей с помощью FQL с токен доступа к приложению - PullRequest
3 голосов
/ 16 марта 2012

Я пытаюсь использовать язык запросов Facebook (FQL), чтобы получить список друзей, которые установили мое приложение.После аутентификации моего приложения и получения токена доступа к приложению я выполняю следующий запрос (обратите внимание, что я использую Java и RestFB для запуска):

https://api-read.facebook.com/method/fql.query?query=SELECT+uid+FROM+user+WHERE+uid+IN+%28SELECT+uid2+FROM+friend+WHERE+uid1%3D<userId>%29+AND+is_app_user%3D1&access_token=<appAccessToken>&format=json

, это возвращает ошибку:

..."error_code":102,"error_msg":"Requires user session"

Аналогично, если я пытаюсь использовать FQL с API-интерфейсом для графов (как показано ниже), я получаю ту же ошибку.

https://graph.facebook.com/fql?q=SELECT+uid+FROM+user+WHERE+uid+IN+%28SELECT+uid2+FROM+friend+WHERE+uid1%3D<userId>%29+AND+is_app_user%3D1&access_token=<appAccessToken>&format=json

Поэтому я попытался использовать маркер доступа пользователя, как и ожидалось, он работает,Я довольно много искал и наткнулся на это: Facebook 'Friends.getAppUsers', использующий Graph API

, который дал несколько полезных советов и побудил меня попробовать следующий запрос:

https://graph.facebook.com/<userId>/friends?fields=installed&access_token=<appAccessToken>&format=json

И это возвращает список друзей с токеном доступа к приложению.

Что приводит меня к моему вопросу.Почему я не могу использовать токен доступа к приложению с FQL, чтобы получить список друзей, но я могу найти друзей с помощью Graph API?

Заранее спасибо,

Бен

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Во-первых, я хотел бы обратить ваше внимание на то, что fql.query из REST API и будет устаревшим.

FB рекомендует использовать GRAPH API в будущем.

Важное замечание: FQL не рекомендуется использовать как устаревший, но только метод fql.query, использующий REST API, будет объявлен устаревшим.

Таким образом, вы можете продолжать использовать FQL и выполнять FQL с помощью GRAPH API.

Подробнее в http://developers.facebook.com/docs/reference/fql/

Пример кода в FB

<code> //get user access_token
  $token_url = 'https://graph.facebook.com/oauth/access_token?client_id='
    . $app_id . '&redirect_uri=' . urlencode($my_url) 
    . '&client_secret=' . $app_secret 
    . '&code=' . $code;
  $access_token = file_get_contents($token_url);

  // Run fql query
  $fql_query_url = 'https://graph.facebook.com/'
    . '/fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()'
    . '&' . $access_token;
  $fql_query_result = file_get_contents($fql_query_url);
  $fql_query_obj = json_decode($fql_query_result, true);

  //display results of fql query
  echo '<pre>';
  print_r("query results:");
  print_r($fql_query_obj);
  echo '
';

Я знаю, что на самом деле я не ответил на ваш вопрос, но это всего лишь набор информации, которая может использоваться в будущем, чтобы соответствовать изменениям FB.

0 голосов
/ 16 января 2014

Когда я использую токен приложения с моим FQL-запросом, я получаю следующий ответ:

«message»: «Для запроса этого ресурса требуется маркер доступа пользователя».1005 *

Похоже, вы должны попытаться использовать токен доступа пользователя.Фактически, когда я переключаюсь с токена приложения на токен аутентификации тестового пользователя, он работает.: - /

...