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

API-интерфейс Facebook не возвращает адрес электронной почты

Изменить: Не дублировать, потому что:

  • У меня есть разрешение
  • Отладка маркера
  • Код работает с тестовым пользователем.

Пожалуйста, не отмечайте как дубликат без чтения.

Я пытаюсь получить адрес электронной почты пользователя, но я не понимаю. В графическом api explorer, когда я нажимаю send, поле электронной почты становится серым и говорит, что:

Поле

пусто или запрещено с помощью токена доступа

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

Мой профиль имеет адрес электронной почты.

Обновление: я пробовал https://developers.facebook.com/tools/console/. Мой профиль ничего не возвращает, даже на другом компьютере. Но тот же код возвращает адрес электронной почты, имя и идентификатор другой учетной записи.

код:

    <fb:login-button scope="email">
  Grant Permissions to make more examples work
</fb:login-button>

<button onclick="doPost()">Post to Stream</button>

<script>
function userData() {
  FB.api('/me?fields=name,email', Log.info.bind('/me callback'));
};

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    userData();
  }
});
</script>

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

The Marcus' ответ марка подводит меня к реальной проблеме, с которой я столкнулся.

Отладка с помощью инструмента Facebook Explorer. Мне удалось выяснить, что я должен установить область электронной почты с помощью метода FB.api() после успешного входа в систему.

FB.login(function(response) {
    if (response.status === 'connected'){
        FB.api('/me?fields=id,email,name', function(data) {
        console.log( data.email ) // it will not be null ;)
    })
}, {scope: 'email'});

Это не совсем понятно в руководстве Quickstart, и я надеюсь, что это поможет и кому-то еще.

Ответ 3

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

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

Ответ 4

В новом графике facebook требуются области, добавленные в запрос /me, как показано ниже:

/я = поля электронной почты, день рождения, место жительства, место действия, age_range, валюта, first_name, last_name, name_format, пол и усилитель;? Access_token =

Ответ 5

У меня была такая же проблема, когда я разрабатывал кнопку входа fb для моего сайта. У меня даже были настройки разрешений для моего приложения здесь:

https://developers.facebook.com/apps/<my-app-ID>/permissions

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

https://developers.facebook.com/tools/explorer/<your-fb-id>/?method=GET&path=100002451127858%3Ffields%3Did%2Cemail

Обновите свой -fb-id своим идентификатором и перейдите по ссылке выше. Нажмите "Получить токен доступа". На открывшейся вкладке нажмите "Расширенные разрешения", и в этом выберите "email" и отправьте. Теперь проверьте ваш запрос еще раз. Это определенно будет работать как на консоли, так и на вашем веб-сайте. Ура!:)

Ответ 6

Это известная ошибка. Если у пользователя нет адреса электронной почты, установленного в primary, запрос возвращает null для электронной почты. Задайте адрес электронной почты для своей учетной записи на https://www.facebook.com/settings?tab=account&section=email&view, а затем попробуйте.

Источник: https://developers.facebook.com/bugs/298946933534016/

Ответ 7

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