Вопрос по api, facebook – войдите с помощью oAuth, что я должен хранить / использовать для идентификации пользователя?

12

Я пытаюсь реализовать вход в систему с помощью функций Facebook / Twitter в своем приложении, я прочитал несколько руководств по oAuth, и я думаю, что понял некоторые основные концепции, и вот что я понял (пожалуйста, исправьте меня, если я ошибаюсь):

myApp send request to the oAuth provider, get the (A)request token. send user to authenticate the (A), returns with (B)authenticated request token (is this whats called oAuth token?) use the (B) to get the (C)access token. use C to access user information.

и вот что я не могу обойти своей головой, какую из них я должен использовать / хранить для идентификации пользователя? Я думал о возможности использования каждого из них, но я всегда застрял на том, как проверить, если пользователь вошел в систему раньше ...

Ваш Ответ

1   ответ
10

user_id достаточно.

Поэтому создайте еще одну таблицу, например:

id | service_name | user_id | my_user_id

гдеservice_name либоtwitter или жеfacebook, user_id - это идентификатор пользователя из твиттера / фейсбука и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: как вы сказали в комментариях, вы, вероятно, захотите «опубликовать / опубликовать в Твиттере».

В этом случае вам необходимо сохранить токен доступа пользователя для Twitter и не хранить ничего дополнительного для Facebook, кроме запроса наpublish_stream разрешение при аутентификации пользователя.

Error: User Rate Limit Exceeded hndr
Error: User Rate Limit Exceeded hndr
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded hndr

Похожие вопросы