2013-05-19 5 views
51

Edit: не дублировать, потому что:Facebook Graph API не будет обратный адрес электронной почты

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

Просьба не отмечать как дубликат без чтения.

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

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

Но когда я отладки маркер, он имеет разрешение по электронной почте предоставляется

У моего профиля есть e-mail адрес.

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

Код:

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

+1

@karthikr, nope, область добавлена, разрешено (Debug показывает, что у токена есть разрешение на электронную почту), но нет электронной почты ... Я могу получить другие данные, просто электронная почта не придет. Просто чтобы очистить, я использую javascript sdk и используя Graph API Explorer. –

+1

Вы нашли решение? У меня такая же проблема, и это сводит меня с ума! –

+1

@MihaiFratu, нет ... Я попробовал все, что нашел, и ситуация очень несовместима с некоторыми пользователями (например, тестовыми, которые вы можете настроить), работающими и живыми из некоторых друзей с действительными основными адресами электронной почты, которые не будут. –

ответ

19

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

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

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

+0

Другим решением является просто добавить еще один адрес электронной почты в свою учетную запись, и исходный адрес электронной почты теперь станет основным – dannrob

1

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

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

+5

У меня есть основной адрес электронной почты ... –

3

У меня была такая же проблема, пока я разрабатывал кнопку входа 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 

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

29

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

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

+0

Это хорошая работа ... Единственная проблема заключается в том, что если вы попробуйте отправить какую-либо почтовую рассылку или другое сообщение электронной почты, она перейдет в «Другой» почтовый ящик на facebook. –

+6

Да, но, по крайней мере, это пойдет SOMEWHERE ... – ozba

+1

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

30

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

Отладка с помощью инструмента для проводника Facebook Я смог выяснить, что должен set the email scope по методу 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'}); 

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

+2

Эти параметры в URL-адресе плюс «электронная почта» работали хорошо для меня, спасибо! – digofreitas

+2

? Поля = ..., электронная почта, ... в запросе api очень важны!и это было какое-то время назад, не требуемое для получения электронной почты, просто/мне было бы достаточно; видимо, не более. Я просто потратил несколько часов на попытку найти эту проблему; большое спасибо!! – Arthur

+0

Наличные деньги за пределами – Oblieapps

2

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

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

+0

Работает для графического API v2.8 – Max

Смежные вопросы