Почему при использовании Omniauth для регистрации в Facebook электронная почта пользователя иногда не включается в хэш аутентификации? - PullRequest
4 голосов
/ 16 февраля 2012

Я использую Rails 3 + Devise 1.5 + OmniAuth через гем omniauth-facebook, чтобы пользователи могли подписаться на мое приложение через Facebook.

У меня все работает гладко, за исключением того, что время от времениУ меня есть кто-то, кто подписался на мое приложение через Facebook, и хэш аутентификации не содержит электронную почту пользователя (хотя он включает в себя много других атрибутов.) Опять же, большую часть времени я получаю электронную почту, но почему не включены некоторые извремя?Есть ли способ для пользователя настроить свои настройки конфиденциальности Facebook таким образом, чтобы мое приложение могло получать всю информацию, такую ​​как имя, пол и часовой пояс, но не электронную почту?Я попытался сделать свою собственную электронную почту в своем профиле Facebook приватной, но я все еще смог войти в свое приложение через Facebook.

Вот пример полученного хэша, в котором пропущено электронное письмо (фактическая информация подверглась цензуре):

"name" => "XXXX XXXXXX", "first_name" => "XXX", "last_name" => "XXXXXX", "image" => "http://graph.facebook.com/XXXXXXXXX/picture?type=square"," urls "=> {"Facebook" => "http://www.facebook.com/XXXXXXXX"}}, "учетные данные"=> {" маркер "=>" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX», "expires_at"=> 1329364800, "истекает"=> верно}, "лишние"=> { "raw_info"=>{"id" => "XXXXXXXX", "name" => "XXXX XXXXXX", "first_name" => "XXXX", "last_name" => "XXXXXX", "link" => "http://www.facebook.com/XXXXXXXXX"," username "=> "XXXXXXXXX", "sex" => "female", "timezone" => - 5, "locale" => "en_US", "verify" => true, "updated_time" => "2012-02-15T00: 01: 23 + 0000 "}}}

Заранее большое спасибо!

Ответы [ 2 ]

0 голосов
/ 20 февраля 2014

Существует по крайней мере несколько причин, по которым это может произойти:

  1. Человек зарегистрировался, используя номер мобильного телефона вместо адреса электронной почты, поэтому у него нет адреса электронной почты, зарегистрированного в Facebook.(см. страницу справки «Основы входа в Facebook», подтверждающую, что вы можете сделать это: https://www.facebook.com/help/418876994823287)
  2. У них есть адрес электронной почты, зарегистрированный в Facebook, но он не подтвержден. Согласно этому вопросу: Естьможно проверить, подтверждено ли письмо в Facebook? Facebook не вернет непроверенный адрес электронной почты (хотя они должны были предоставить номер телефона для подтверждения учетной записи перед входом в систему). Однако я не подтвердил это поведение.
0 голосов
/ 16 февраля 2012

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

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

Я считаю, что это отдельный контроль конфиденциальности от настроек конфиденциальности электронной почты.

...