Предисловие
Делая свой проект (в котором я реализовал то, о чем я сейчас буду говорить) я, конечно, сразу предусмотрел возможность входа через социальные сети и прочие oAuth-провайдеры — это удобно, это быстро, это дает много начальной информации о пользователе.
Но в какой-то момент (и не только при разработке сервиса, а вообще, пользуясь входом через oAuth), я заметил одну большую проблему — oAuth-провайдеров так много, что иногда забывается, на каком сайте через что входишь (и это проблема уровня входа через логин-пароль — там тоже можно было забыть, какой логин и пароль, но там-то можно было воспользоваться всякими 1Password и LastPass).
Проблема
Проблема заключается в том, что сложно вспомнить, через какой конкретный провайдер я заходил на конкретном сайте. В итоге — из моего опыта (и собранному фидбэку) я могу рассказывать истории, когда на каком-нибудь stackoverflow есть по 3 аккаунта, которые между собой не связаны вообще. Можно, конечно, в настройках (как на хабре) связать между собой, это одно из решений проблем, да, но я предлагаю еще и другой подход.
Решение
Используя localStorage, можно хранить простейшую пару key-value типа { "oauth": "vk" }
(можно еще и имя, например) и на основе этих данных (не удалять их при выходе с сайта) напоминать пользователю, через какой провайдер он заходил. Легко реализовывается, легко используется.
* да, лучше писать «обычно вы заходите через ВКонтакте», а не «в последний раз», но мне было лениво переделывать скриншот
Из минусов:
- возможная проблема с безопасностью — злоумышленник сразу поймет, через что нужно логиниться (но кто виноват, если утрачен физический доступ к устройству, явно не сервис)
- пользователь может (но вовсе не обязательно) испугаться, что за ним следят, все же такие Сноудены (и при этом регистрируются через социальные сети)
- не кроссдевайсно — localStorage хранится только в конкретном браузере. Можно использовать cookie для этого. Плюс, я наслышан, что в хроме можно будет шарить Storage-данные между девайсами, хотя и не читал толком
Но плюс — огромное улучшение UX — перевешивает минусы. Улучшайте user experience, это не только красивый дизайн и анимации.
Автор: theaqua