Подтвердить что ты не робот

Facebook Callback JSON не возвращает почту иногда

Facebook Graph API.

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

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

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

Любой намек будет оценен

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

из facebook docs:

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

Источники:

Ответ 4

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

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

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