Facebook Graph API -> пользователь / события возвращает пустой массив - PullRequest
7 голосов
/ 01 мая 2019

Во-первых, чтобы объяснить ситуацию:

  • мое приложение было одобрено App Review для user_events (снимок экрана ниже)
  • Я тестирую на рабочем приложении, среальная учетная запись пользователя (тестирование с правами администратора возвращает ложные срабатывания)
  • вызов {user_id}/ работает и возвращает базовый профиль.
  • вызов {user_id}/permissions работает и возвращает разрешения (вкл. user_events, снимок экрана ниже)
  • вызов {user_id}/events всегда «работает», но возвращает и пустой массив.

Я попытался протестировать «я» вместо того, чтобы войти в систему fb_user_id и получитьтот же результат пустых данных.Если я тестирую из своей учетной записи администратора, данные user_events всегда заполняются данными.Я пробовал с меньшим / без параметров, чем на скриншоте ниже, все отлично работает для тестовых пользователей, но не для живых пользователей.

Большое спасибо за любую помощь!

скриншоты:

enter image description here

enter image description here

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

Тестирование с другим пользователем

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

enter image description here

Я вхожу в систему с Эллисон Клинтон и создаю событие

enter image description here

Я могуполучить через API /events

enter image description here

Затем я переключаю приложение facebook в рабочий и удаляю пользователя из тестовой роли

enter image description here

Я могу получить информацию о пользователе

enter image description here

, но я не могу получить ранее созданныйсобытие

enter image description here

Завершение процесса авторизации

Возможно, вы не завершили процесс проверки для user_events?

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

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

Возможно, вам потребуется выполнить

также рассмотрим сообщение об ошибке и указание ссылки здесь

Как отлаживать Facebook Graphql

Единственный возможный сценарий состоит в том, чтоиспользуемый вами токен не включает разрешение user_events.

Запрос к /users/events с токеном, у которого отсутствует разрешение user_events, вернет статус 200 и data: [], сообщений об ошибках в ответе нет.

Я тестировал этот сценарий на Graphql Facebook Explorer и запрос не возвращает сообщение об ошибке.Отладочное сообщение отображается в Api explorer, но оно явно не включено в ответ.

enter image description here

Я экспортировал этот запрос как curl, и это результат

~ $ curl -i -X GET  "https://graph.facebook.com/v3.3/10210855772523702/events?access_token=TOKEN"
HTTP/2 200 
content-type: application/json; charset=UTF-8
facebook-api-version: v3.3
x-fb-debug: h1WInt+yxtkm/1isTGfG2cd9JX8HAx5R5A9U/QC4k2lRrJ5mrKYaInR2Mm6XQ5UOrdSquAgWKnYj2jiTw6fwLQ==

{"data":[]}

Вы можете получить отладочную информацию передача параметра debug=all в вашем /users/events запросе , как в примере curl ниже:

~ $ curl -i -X GET  "https://graph.facebook.com/v3.3/10210855772523702/events?debug=all&access_token=TOKEN"
HTTP/2 200 
{"data":[],"__debug__":{"messages":[{"message":"The field 'events' is only accessible on the User object after the user grants the 'user_events' permission.","type":"warning"}]}}

Мой совет вам добавить параметр ?debug=all в ваш запрос и включитьрезультат ответа на ваш вопрос, чтобы мы могли помочь вам в устранении неполадок.

Ниже приведены другие тесты, которые я выполнил с помощью Graphql Facebook Explorer и смог получить события.


ШАГ 1. Перейдите на Facebook Graph API Explorer

enter image description here

STEP2. Сгенерируйте токен

  1. get token -> get user access token и добавьте разрешение user_events

ШАГ 3. Запустите запросы

Используйте конечную точку /me?fields=id,name для получения вашего идентификатора пользователя, а затем:

  1. get /{user-id}
  2. get /{user-id}/permission
  3. get /{user-id/events

, как вы можете видеть изНа рисунках ниже /events возвращает data: [], в то время как конечная точка /permissions имеет разрешение user_events.

Мой пользователь Facebook не присоединился ни к какому событию в будущем.Создание события и повторение теста вернули некоторые результаты.

На рисунках ниже показаны мои тесты

enter image description here

enter image description here

enter image description here

enter image description here

0 голосов
/ 03 мая 2019

Вы "зарегистрировали" своего живого пользователя в своем приложении и после этого выбрали этого пользователя для доступа к его токену? Только после этого вы можете получить доступ к событию этого пользователя и т. Д., Если этот пользователь даст вам разрешение.

1) Вы должны зарегистрировать в своем приложении, какие средства доступа ваше приложение одобрит для вашего приложения на Facebook.

2) Пользователь должен войти в ваше приложение. (Выберите токен вашего пользователя в дроплисте, как на фото)

3) Пользователь, вошедший в ваше приложение, должен иметь разрешение на открытие своих событий, сообщений и т. Д.

Выберите пользователя здесь

...