2012-03-16 3 views
3

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

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' using Graph API

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

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

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

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

Спасибо заранее,

Бен

ответ

2

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

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

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

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

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

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

//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 '</pre>'; 

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

+0

Спасибо за советы. Я обновил свой вопрос, чтобы использовать FQL с графическим API. Все равно получите ту же ошибку, хотя :( –

0

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

"message": "A user access token is required to request this resource."

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

Смежные вопросы