Можно ли проверить, подтверждено ли письмо на 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 API userinfo может сказать мне, подтверждено письмо или нет, так что здесь нет проблем. Но я не могу найти ничего подобного в Facebook Graph API.

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

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

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

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

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

Проверка безопасности во время регистрации

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

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

Просмотр настроек Facebook с неподтвержденным адресом электронной почты

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

Просмотр мобильных настроек Facebook с неподтвержденным адресом электронной почты

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

Вход в Graph API Explorer с неподтвержденным адресом электронной почты

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

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

2 ответа

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

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

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

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

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

Другие вопросы по тегам