Войдите в систему с помощью oAuth, что я должен хранить/использовать для идентификации пользователя?
im, пытающийся внедрить логин с функциями facebook/twitter в моем приложении, я прочитал несколько руководств по oAuth, и я думаю, что понял некоторые основные понятия, и вот что я понял (пожалуйста, поправьте меня, если я неправильно):
- myApp отправляет запрос поставщику oAuth, получает токен запроса (A).
- отправить пользователя для аутентификации (A), возвращает с (B) аутентифицированным маркером запроса (это то, что называется токеном oAuth?)
- используйте (B), чтобы получить токен доступа (C).
- используйте C для доступа к пользовательской информации.
и вот что я не могу обойти вокруг себя, какой из них я должен использовать/хранить для идентификации пользователя? я думал о возможности использования каждого из них, но im всегда зациклился на том, как проверить, подписан ли пользователь раньше...
Ответы
Ответ 1
Если вам нужна только проверка подлинности, то достаточно хранить только user_id
.
Итак, создайте другую таблицу, например:
id | service_name | user_id | my_user_id
где service_name
либо twitter
, либо facebook
, user_id
- это идентификатор пользователя из твиттера /facebook, а my_user_id
- user_id
в вашей системе аутентификации.
Итак:
SELECT my_user_id FROM oauths WHERE service_name = 'twitter' AND user_id = 42
вернет вам вашу систему user_id или ничего
PS: service_name
может (и должен) быть нормализован, я сохранил его как строку, чтобы упростить пример
PPS: как вы сказали в комментариях, вам, вероятно, понадобится "публикация/твитирование".
В этом случае вам нужно сохранить токен доступа пользователя к твиттеру и не хранить ничего дополнительного для facebook, но запросить разрешение publish_stream
при аутентификации пользователя.