Почему я получаю эту ошибку, когда пытаюсь получить доступ к объекту определенного типа через Facebook Graph API? - PullRequest
3 голосов
/ 08 мая 2011

У меня есть пользователь, user_2 . На их стене есть пост, сделанный user_1 .

enter image description here

URL-адрес

https://www.facebook.com/user_1/posts/10150166228506188

Я пытаюсь получить контент, используя Graph API, с таким запросом:

https://graph.facebook.com/10150166228506188?access_token=ACCESSTOKENUSER_2

Я получаю эту ошибку:

{
   "error": {
      "type": "GraphMethodException",
      "message": "Unsupported get request."
   }
}

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

https://graph.facebook.com/10150233707783933?access_token=ACCESSTOKENUSER_2

Результат:

{
   "id": "10150233707783933",
   "from": {
      "name": "American Steel",
      "category": "Professional sports team",
      "id": "203692078932"
   },
   "tags": {
      "data": [
etc

Ошибка возникает, когда я пытаюсь получить элементы с таким URL:

https://www.facebook.com/username/posts/item_id

Разрешения моего приложения включают в себя следующие: enter image description here

Почему происходит эта ошибка?

Ответы [ 2 ]

4 голосов
/ 08 мая 2011

Я думаю, что для того, чтобы получить доступ к сообщениям непосредственно через график API, вам необходимо добавить идентификатор пользователя к идентификатору записи, который вы видите в ссылке на Facebook.

Итак, в вашем примере URL поста на Facebook:

https://www.facebook.com/user_1/posts/10150166228506188

И вы пытаетесь пройти через график API:

https://graph.facebook.com/10150166228506188?access_token=ACCESSTOKENUSER_2

НО вы должны делать:

https://graph.facebook.com/{id of user_1}_10150166228506188?access_token=ACCESSTOKENUSER_2

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

https://graph.facebook.com/me/posts?access_token=...

Решает ли это вашу проблему?

2 голосов
/ 08 мая 2011

Вы неправильно получаете доступ к конечной точке сообщения.Каждый объект в Facebook имеет уникальный идентификатор.Прямо сейчас, так получилось, что они формируют его, добавляя разные идентификаторы вместе (например, ваш пост <user_id>_<post_id>, и для комментария к этому посту это будет <user_id>_<post_id>_<comment_id>).Facebook не обнародовал это (не то, что они действительно должны, это очевидно), что заставляет меня полагаться на эту парадигму для доступа к данным в графе.Это потому, что Facebook может изменить это в любой момент, и тот факт, что они не сказали «да, добавьте эти 2 идентификатора вместе, и вы можете получить что-то значимое из этой части графика», означает, что им не придется никому уведомлять оизменение, вы могли бы просто проснуться однажды, и ваше приложение было бы полностью сломано, и вам нужно было бы быстро и с трудом найти обходной путь.

График API работает, получая доступ к объектам на Facebook, делаязапрос к API для этого уникального идентификатора.Таким образом, вам не нужно получать доступ (и не можете получить доступ) к своим сообщениям, перейдя на graph.facebook.com/<user_id>/posts/<post_id>.Вместо этого вы переходите на graph.facebook.com/<post_id>.Вы получаете post_id от конечной точки /<user_id>/home или /<user_id>/feed на графике.Нет необходимости изменять post_id для извлечения информации о нем из графика.

Надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...