не удается получить данные с помощью токена доступа к приложению Facebook

Я пытаюсь написать приложение для Facebook. Я могу легко использовать разрешения от пользователя Facebook. И я пытаюсь получить некоторые данные из разных таблиц Facebook, используя FQL. Это разрешения, которые имеет мое приложение:

{
   "data": [
      {
         "installed": 1,
         "read_stream": 1,
         "status_update": 1,
         "photo_upload": 1,
         "video_upload": 1,
         "email": 1,
         "create_note": 1,
         "share_item": 1,
         "publish_stream": 1,
         "read_insights": 1,
         "manage_notifications": 1,
         "read_friendlists": 1,
         "publish_actions": 1,
         "user_birthday": 1,
         "user_religion_politics": 1,
         "user_relationships": 1,
         "user_relationship_details": 1,
         "user_hometown": 1,
         "user_location": 1,
         "user_likes": 1,
         "user_activities": 1,
         "user_interests": 1,
         "user_education_history": 1,
         "user_work_history": 1,
         "user_website": 1,
         "user_groups": 1,
         "user_events": 1,
         "user_photos": 1,
         "user_videos": 1,
         "user_photo_video_tags": 1,
         "user_notes": 1,
         "user_questions": 1,
         "user_about_me": 1,
         "user_status": 1,
         "user_games_activity": 1,
         "user_subscriptions": 1
      }
   ]
}

Это означает, что у меня есть разрешение на получение данных из таблицы потоков. Потому что ему нужны read_stream и read_insight. Это мой URL для получения данных:

https://graph.facebook.com/fql?q=SELECT likes, comments, post_id, actor_id from stream where source_id=SOURCE_ID&access_token=MY_ACCESS_TOKEN

но результат { "data": [ ] }

совершенно пустой. Это не дает ошибки.

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

Могу ли я получить данные из таблицы потоков, используя токен доступа приложения? Нет ли способа получить его с помощью токена доступа приложения?

Токен доступа моего приложения не дает никаких ошибок. В чем проблема с моим токеном доступа?


person user1734194    schedule 10.10.2012    source источник


Ответы (1)


Вы не можете получить данные stream с помощью токена доступа к приложению. Вы должны аутентифицировать пользователя в своем приложении и использовать токен доступа пользователя для получения этих данных. Если вы измените приложение в обозревателе Graph API, оно аутентифицирует вас и по-прежнему получит токен доступа пользователя на ваше имя.

Кроме того, имейте в виду, что в разделе «Настройки конфиденциальности» есть параметр, с помощью которого пользователь может запретить любой доступ к своим данным со стороны приложений. Если это установлено, вы ничего не увидите для этого конкретного пользователя ни в вашем приложении, ни в обозревателе API.

Пустой набор данных — это нормальный результат для Facebook, когда у вас нет разрешений, необходимых для просмотра запрошенных вами данных. Если вы покопаетесь в документации API, сервер API Facebook сначала выполнит ваш запрос, а затем отфильтрует результаты, чтобы показать, что видно вашему приложению и токену доступа. Этот фильтр может удалить все данные, поэтому возвращается пустой набор данных.

person cpilko    schedule 10.10.2012
comment
Но что, если я хочу получить доступ к сообщению, опубликованному моим приложением, когда пользователь не в сети. Эти правила все еще действуют? Я не могу использовать пользовательский access_token, потому что срок его действия истечет. Я не могу использовать разрешение offlie_access, потому что это не долгосрочное решение. У тебя есть какой-нибудь совет? - person bhdrkn; 10.10.2012
comment
Вы можете запросить токен долгосрочного доступа и хранить его локально. В настоящее время они действительны в течение 60 дней. Это можно использовать для выполнения этого запроса. Пользователи вашего приложения должны часто посещать и повторно авторизовывать ваше приложение, чтобы вы могли обновить этот токен. Я думаю, что идея отказа от разрешения offline_access заключается в том, что если кто-то не использовал ваше приложение в течение 60 дней, он, вероятно, не захочет его использовать больше. - person cpilko; 10.10.2012