Facebook Callback JSON иногда не возвращает электронную почту - PullRequest
13 голосов
/ 06 апреля 2011

API Graph Facebook.

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

Кто-нибудь сталкивался с этой проблемой раньше ??

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

Любая подсказка будет оценена

Ответы [ 4 ]

2 голосов
/ 16 января 2012

Никогда не делайте предположений о том, что Facebook отправит вам, никогда не ожидайте, что каждое поле будет присутствовать, и никогда не ожидайте, что запрос Graph сделает то, что вы хотите.

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

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

Учитывая вашу конкретную проблему, я сомневаюсь, что есть возможность скрыть ваш адрес электронной почты в приложении, у которого есть разрешение на почту, но если разрешение не является обязательным, кто-то может принять ваше приложение и выбрать дополнительные разрешения cherry-pick позже.

0 голосов
/ 12 июля 2017

Единственное, что сработало для меня, это запрос разрешенных полей через API:

FB.api("/me", {fields: "email,..."}, callback)

Это полностью устранило проблему.Надеюсь, это поможет.

0 голосов
/ 06 мая 2015
У

была такая же проблема какое-то время, что вызывало сильную стук головы о стену.

в моем случае проблема была связана с тем, что у некоторых пользователей было непроверенных писем или вообще никаких писем (при регистрации через мобильный телефон / SMS). в этом случае Facebook не предоставит ответ по электронной почте.

из документов Facebook :

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

Источники:

  1. https://github.com/mkdynamic/omniauth-facebook/issues/61
  2. При регистрации в Facebook иногда не предоставляется электронная почта (ответы Себастьяна и Колма)
  3. https://developers.facebook.com/docs/reference/api/user/
0 голосов
/ 14 октября 2013

Я недавно занимался этим вопросом. Видимо, фейсбук только обещает вернуть «действующий адрес электронной почты». Некоторые учетные записи не имеют "действительный адрес электронной почты". Это может быть учетная запись, которая использует телефон для проверки, или учетная запись, срок действия электронной почты которой истек. Я пытался с учетной записью, чья электронная почта, допустим, что срок действия «xxxx.gmail.com» истек, при запросе этого графа учетной записи я не смог получить показы по электронной почте (с помощью отладчика Facebook). Однако, когда я захожу на xxxx.gmail.com в gmail и повторно активирую электронную почту, и я снова запрашиваю график api для учетной записи, он может вернуть мне электронную почту.

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