Facebook Graph API не возвращает адрес электронной почты
Edit:не дублировать, потому что:
- у меня есть разрешение
- отладка маркер
- код работает с тестовым пользователем
пожалуйста, не отмечайте как дубликат без чтения.
Я пытаюсь получить адрес электронной почты пользователя, но я его не получаю. В graph api explorer, когда я нажимаю отправить, поле электронной почты становится серым и говорит, что:
поле пусто или запрещено токен доступа
но когда я отлаживаю токен, у него есть разрешение на электронную почту
мой профиль имеет адрес электронной почты.
обновление: я пробовал https://developers.facebook.com/tools/console/ . Мой профиль ничего не возвращает, даже на другом компьютере. Но тот же код возвращает адрес электронной почты, имя и uid другой учетной записи.
код:
<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>
можно заблокировать вашу электронную почту, чтобы никто не мог это? Даже когда я даю разрешение?
6 ответов:
Маркус' ответ приводит меня к реальной проблеме, с которой я столкнулся.
отладка с помощью инструмента Facebook Explorer я смог выяснить, что я должен установите область электронной почты на
FB.login()метод.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'});это не совсем понятно на краткое руководство руководство и я надеюсь, это поможет кому-то еще.
У меня была та же проблема, и я думаю, что узнал, почему: Если пользователь имеет неподтвержденное письмо в Facebook (т. е. Facebook отправил ему письмо с подтверждением на свой адрес электронной почты, но он не ответил) Facebook не передаст это письмо в ваше приложение, даже если он дал вам разрешения на электронную почту (!!!).
Итак, что я сделал, это использовать его электронную почту Facebook, если у него есть имя пользователя (т. е. [email protected]).
после того, как я получил свой отчет об ошибке помечен как дубликат, и я прочитал все сообщения и ссылки там, я получил то, что вызвало эту проблему для меня и как исправить.
Проблема Facebook, кажется, иногда забывает, что ваш основной адрес электронной почты находится в API graph (но он все еще есть в настройках.)
решение Пострадавший пользователь должен удалить электронную почту, сохранить настройки, затем повторно добавить адрес, повторно подтвердить, а затем сделать его основным. Это исправило мою учетную запись как в моем приложении sandbox, так и в других приложениях, где вход в Facebook не используется для работы.
у меня была такая же проблема, когда я разрабатывал кнопку входа 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 с вашим id и перейдите по ссылке выше. Нажмите на кнопку "Получить маркер доступа". В открывшейся вкладке нажмите на кнопку "расширенные разрешения" и в этом, выберите "электронная почта" и отправить. Теперь проверьте свой запрос еще раз. Это определенно будет работать, как на консоли, так и на вашем сайте. Ура! :)
новый график facebook требует областей, добавленных в запрос /me следующим образом:
/меня?fields=email,birthday,location,locale,age_range,currency,first_name,last_name,name_format,gender&access_token=
Это известная ошибка. Если у пользователя нет адреса электронной почты, установленного в primary, запрос вернет значение null для электронной почты. Установите для своей учетной записи адрес электронной почты primary https://www.facebook.com/settings?tab=account§ion=email&view а потом попробуй.
источник: https://developers.facebook.com/bugs/298946933534016/
Comments