Запрос друзей в Facebook возвращается пустым, несмотря на разрешения

Я создаю бэкэнд Rails для приложения iOS. Серверная часть должна взаимодействовать с Facebook, чтобы собирать и использовать друзей каждого пользователя на Facebook.

Но запрос «друзья» Facebook возвращается пустым.

По сути, я делаю следующий запрос:

curl https://graph.facebook.com/[FILTERED_USER_ID_FOR_APP]?fields=friends&access_token=[FILTERED]&debug=all

Я просмотрел множество сообщений StackOverflow об этом (этот и этот и этот и другие), но не нашли идентичной проблемы или подходящего решения.

Вроде права выставил правильно. Как в приложении Rails, так и при аутентификации пользователя через приложение для iPhone я установил user_friends в качестве одного из разрешений, и, фактически, когда кто-то регистрируется сейчас, он просит их подтвердить разрешение друзей пользователя.

Но когда я на самом деле запрашиваю их друзей, я получаю ответ, говорящий мне, что друзей есть много, но не возвращающий ни одного из них. Ответ ниже предназначен для пользователя, у которого определенно есть друзья в приложении.

{
  "data":[],
  "summary": {
    "total_count": 419 
  },
  "__debug__": {
    "messages": [
       { 
        "link": "https:\/\/developers.facebook.com\/docs\/apps\/versions\/", 
        "message": "No API version was specified. This request defaulted to version v2.7.","type":"warning"
       },        
       {
         "link": "https:\/\/developers.facebook.com\/docs\/apps\/changelog#v2_0",
         "message": "Only friends who installed this app are returned in API v2.0 and higher. total_count in summary represents the total number of friends, including those who haven't installed the app.",
         "type": "info"
       }
     ]
   }
 }

Что меня озадачивает, так это то, что а) идентификатор приложения/идентификатор пользователя/токены доступа кажутся правильными, потому что я могу получить основную информацию о профиле, и б) я делаю not получить сообщение об ошибке, сообщающее мне, что запрос не имеет надлежащих разрешений. Если я сделаю аналогичный запрос без разрешений в обозревателе, он вернет соответствующее примечание об отладке:

  {
    "message": "The field 'friends' is only accessible on the User object after the user grants the 'user_friends' permission.",
    "type": "warning"
  }

Если я сделаю это с правильными разрешениями в проводнике, он вернет список друзей (в массиве data).

Таким образом, не похоже на проблему с разрешениями, но запрос возвращает пустой список друзей. Любые идеи?


person Sasha    schedule 21.11.2016    source источник
comment
Вы уверены, что учли это? stackoverflow.com/questions/23417356/   -  person Igy    schedule 22.11.2016


Ответы (1)


С помощью Иги (указанный на этот ответ) я нашел конкретный ответ на мою проблему, которую, кажется, стоит добавить сюда.

Проблема заключалась в том, что новая версия API 2.0+ возвращает только друзей:

  1. Кто есть в приложении
  2. Которые сами согласились на user_friends разрешения.

1 было разобрано, но поскольку я все еще тестирую приложение, и никто еще не принял разрешения, мой тестовый пользователь был единственным человеком, который принял разрешения. Никто другой не принял user_friends, поэтому никто не появился в качестве друга тестового пользователя. Привлечение друга тестового пользователя для добавления разрешений решило проблему, добавив этого друга в список возвращенных друзей.

person Sasha    schedule 21.11.2016