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

Поле электронной почты Facebook возвращает null (даже если разрешение "электронная почта" установлено и принято)

Для некоторых пользователей в нашем приложении поле электронной почты возвращает NULL, даже если пользователь предоставил почтовый доступ к приложению. Когда мы проверяем параметр области действия и достоверность пользовательского токена благодаря инструменту отладчика, все в порядке. Письмо с разрешением принято. Но когда мы запрашиваем API-интерфейс Graph для электронной почты пользователя с допустимым токеном пользователя, он вообще не отображается.

Есть ли способ, которым пользователь может помешать приложению получать электронную почту, даже если он предоставил разрешение на электронную почту?

Спасибо

4b9b3361

Ответ 1

У меня была такая же проблема, и я думаю, что узнал, почему: Если у пользователя есть неподтвержденное электронное письмо в Facebook (например, Facebook отправил ему письмо с подтверждением на адрес электронной почты пользователя, но он не ответил). Facebook НЕ отправит это письмо в ваше приложение, даже если он дал вам разрешения на доступ к электронной почте.

Итак, что я сделал, это использовать его или ее Facebook-адрес электронной почты, если у пользователя есть имя пользователя (то есть [email protected]).

Ответ 2

У меня такая же проблема. Он работает нормально на моем localhost, я использую php SDK для входа в facebook и когда я отправляю свой запрос, он возвращает все поля, такие как адрес электронной почты, имя и т.д. Пользователя, но на сервере как-то он не работает. Он не будет возвращать электронную почту пользователя, Я сделал много R & D на этом, и у меня есть решение проблемы.:)

$profile = $facebook->api('/me?fields=email,first_name,last_name');

если вы используете php-sdk, просто передает такие поля, как это, он возвращает адрес электронной почты, имя_пользователя и т.д. Надеюсь, это сработает для всех вас. спасибо.

Ответ 3

Facebook не отправляет электронное письмо, если пользователь вошел в систему с их номером телефона. Просмотрите комментарии https://github.com/mkdynamic/omniauth-facebook/issues/61 для получения дополнительной информации.

Ответ 4

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

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

см. https://developers.facebook.com/docs/reference/api/user/

Ответ 5

Вы должны предоставить разрешение электронной почты вместе с кнопкой auth.

authButton.setReadPermissions(Arrays.asList("email"));

Ответ 6

Все, что вам нужно знать:

1) Ссылка 1

Некоторые возможные причины:

Нет адреса электронной почты в аккаунте

Нет подтвержденного адреса электронной почты на счету

Нет подтвержденного адреса электронной почты на счету

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

  • Адрес электронной почты пользователей недоступен

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

2) Ссылка 2

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

Ответ 7

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

Ответ 8

Решение @ozba не применимо, поскольку в facebook теперь отображается предупреждающее сообщение, когда пользователь имеет неподтвержденный адрес электронной почты. Итак, если у вас возникла эта проблема, вам больше нравится, что пользователь зарегистрировался по номеру телефона. Message when trying to access email

Некоторые возможные причины:

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

Проверьте: https://developers.facebook.com/bugs/298946933534016

Ответ 9

В соответствии с документация:

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

Это объясняет, почему у некоторых пользователей есть null электронная почта!

Ответ 10

вы можете попробовать это, он будет работать String email = user.getProperty( "email" ). ToString(); String safeEmail = user.asMap(). Get ( "email" ). ToString();

Ответ 11

Вам нужно еще одно разрешение от facebook.

включить (about_me) разрешение на установку facebook dev, а также в ваше приложение или код.

Ответ 12

Я прочитал предыдущие ответы, но хотя некоторые из них верны, как если бы пользователь не подтвердил электронную почту, а номер мобильного телефона, эта ошибка повторяется во многих случаях, игнорируя способ запроса информации с помощью графика FB api. Скажем, ваш логин был успешно выполнен, и теперь у вас есть токен доступа и идентификатор пользователя, но все же, вы не можете видеть интересующие вас адреса электронной почты и другие поля. Используйте этот запрос после подтверждения состояния входа в систему:

FB.api(
  '/me',
  'GET',
  {"fields":"id,name,birthday,email,about,cover"},
  function(response) {
      // Insert your code here
  }
);

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

Ответ 13

$loginUrl = $facebook->getLoginUrl(
  array(
    'req_perms' => 'email'
  )
);