it-swarm.com.ru

Можно ли проверить, подтверждено ли письмо на Facebook?

Обновление

Об этом было сообщено в Facebook через https://www.facebook.com/whitehat/report/ 16 декабря 2013 года, а 17 декабря Facebook ответил, что ошибка давно устранена.

Я повторно проверил это с моей учетной записью Facebook (на которой я до сих пор не подтвердил адрес электронной почты) и при использовании инструмента Grap API Explorer невозможно получить адрес электронной почты этой учетной записи с помощью Graph API или используя запрос FQL.

Заключение: Адрес электронной почты, который вы получаете от Facebook с помощью Graph API или запроса FQL, является подтвержденным адресом электронной почты. Если учетная запись еще не подтверждена, это электронная почта, но получить ее невозможно. 

Оригинальный пост

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

Чтобы не создавать проблем с безопасностью, я должен знать, что адрес электронной почты проверен и фактически принадлежит пользователю. Для Google userinfo API может сказать мне, подтверждено письмо или нет, так что здесь нет проблем. Но я не могу найти ничего подобного в Facebook Graph API .

Можно ли узнать, подтвержден ли адрес электронной почты в Facebook?

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

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

Однако это не похоже на правду для всех учетных записей. В некоторых случаях можно получить доступ ко всем частям Facebook, даже если у вас нет подтвержденного адреса электронной почты. Один из примеров этого - когда вы регистрируетесь с @ myopera.com почтовым адресом.

Когда вы регистрируетесь в Facebook с адресом электронной почты @ myopera.com, вы получаете сообщение о том, что ваша учетная запись была временно заблокирована, как только вы отправляете форму регистрации. Чтобы продолжить, вам нужно указать свой номер телефона, чтобы подтвердить свою учетную запись и «защитить Facebook от спама» (извините за шведское на скриншоте, это было до того, как я смог войти в Facebook и сменить язык на английский):

Security check during sign up

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

Единственное место, где вы можете увидеть, что ваш адрес электронной почты еще не подтвержден, находится на странице настроек:

Facebook settings view with unconfirmed email address

Мобильные настройки, которые обычно недоступны до того, как вы проверили свой адрес электронной почты, доступны и содержат номер телефона, указанный при регистрации:

Facebook mobile settings view with unconfirmed email address

В дополнение к этому также возможно войти на сторонние сайты с неподтвержденным адресом электронной почты:

Logging in to graph API Explorer with an unconfirmed email address

Когда я подключаюсь к графику API с этим пользователем, я могу получить неподтвержденный адрес электронной почты, и поле verified возвращает значение true, как и ожидалось, поскольку я проверил учетную запись , добавив номер телефона. Поэтому, очевидно, я не могу доверять тому, что адрес электронной почты, который я получаю от Facebook, действительно принадлежит пользователю, который имеет учетную запись Facebook.

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

63
nibarius

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

http://www.facebook.com/search/results.php?q=<email address here>

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

3
J. Scott Elblein

Я искал официальное заявление Facebook по этому вопросу, и, наконец, я нашел это: https://developers.facebook.com/docs/facebook-login/multiple-providers#postfb1 , в котором четко сказано, что разработчик не должен полагаться на то, что адрес электронной почты подтвержден.

0
jano

Я никогда не использовал его, но вы можете проверить с помощью FQL-запроса user.email_hashes: http://developers.facebook.com/docs/reference/fql/user

0
Johntron