Update
Об этом сообщается в Facebook через https://www.facebook.com/whitehat/report/ 16 декабря 2013 года, а Facebook ответил 17 декабря, что ошибка уже давно был исправлен.
Я протестировал это с помощью своей учетной записи Facebook (что я до сих пор не подтвердил адрес электронной почты) и при использовании Инструмент API-интерфейса Grap невозможно получить адрес электронной почты этой учетной записи с помощью API-интерфейса Graph или с помощью запроса FQL.
Вывод:. Адрес электронной почты, который вы получаете через Facebook с помощью API-интерфейсов Graph или FQL, является проверенным электронным письмом. Если учетная запись еще не проверила его по электронной почте, пока это невозможно получить.
Оригинальное сообщение
Я создаю веб-приложение с SSO, которое предлагает пользователю войти в систему с помощью Google или Facebook. Я хотел бы, чтобы пользователи, у которых есть оба типа учетных записей, отображались как один и тот же пользователь в моей системе, независимо от того, с какой личностью они входят в систему. Чтобы достичь этого, я думаю об использовании адреса электронной почты в качестве идентификатора, чтобы узнать, следует ли мне создать новую учетную запись или если пользователь уже существует.
Чтобы не вводить какие-либо проблемы с безопасностью, я должен знать, что адрес электронной почты проверен и фактически принадлежит пользователю. Для Google userinfo API может сказать мне, проверено ли электронное письмо или нет, поэтому здесь нет никаких проблем. Но я не могу найти ничего подобного в Facebook Graph API.
Возможно ли узнать, подтвержден ли адрес электронной почты на Facebook?
Я знаю, что есть поле verified
, но это только говорит, проверяется ли учетная запись, а не адрес электронной почты.
Сначала было похоже, что вы можете использовать Graph API для учетных записей, на которых подтвержден адрес электронной почты. Если адрес не был подтвержден, я просто получил сообщение о том, что мне сначала нужно было подтвердить адрес электронной почты, прежде чем вы сможете войти на любой сторонний сайт.
Однако это не похоже на все учетные записи. В некоторых случаях можно получить доступ ко всем частям Facebook, даже если у вас нет подтвержденного адреса электронной почты. Один из примеров этого - когда вы регистрируетесь с @myopera.com почтовый адрес.
Когда вы подписываетесь на Facebook с адресом электронной почты @myopera.com, вы получаете сообщение о том, что ваша учетная запись была временно заблокирована, как только вы отправите форму регистрации. Чтобы продолжить, вам нужно указать свой номер телефона, чтобы подтвердить свою учетную запись и "сохранить Facebook в безопасности и освободить от спама" (извините за шведский на скриншоте, это было до того, как я смог попасть в Facebook и сменить язык на английский):
Когда вы указываете свой номер телефона, вы вошли в систему, и Facebook больше не навязывает вам, что вы должны подтвердить свой адрес электронной почты.
Единственное место, где вы можете видеть, что ваш адрес электронной почты еще не подтвержден, находится на странице настроек:
Настройки мобильных устройств, которые обычно недоступны до того, как вы подтвердили свой адрес электронной почты, доступны и перечислены номер телефона, введенный во время регистрации:
В дополнение к этому также можно войти на сторонние сайты с неподтвержденным адресом электронной почты:
Когда я подключаюсь к графику api с этим пользователем, я могу получить неподтвержденный адрес электронной почты, а поле verified
возвращает true как ожидалось, так как я проверил учетной записи, добавив номер телефона. Поэтому, очевидно, я не могу доверить, что адрес электронной почты, который я получаю от Facebook, действительно принадлежит пользователю, у которого есть учетная запись Facebook.
Есть ли другой способ узнать, проверен ли адрес электронной почты или нет, или я должен сам его проверить, если я хочу использовать его для идентификации пользователя?