使用oAuth登录,我应该存储/使用什么来识别用户?

hnd*_*ndr 14 authentication api twitter facebook oauth

我试图在我的应用程序中实现登录与facebook/twitter功能,我阅读oAuth的一些指南,我想我理解了一些基本概念,这是我理解的(如果我错了请纠正我):

  1. myApp向oAuth提供者发送请求,获取(A)请求令牌.
  2. 发送用户验证(A),返回(B)经过身份验证的请求令牌(这是什么称为oAuth令牌?)
  3. 使用(B)获取(C)访问令牌.
  4. 使用C访问用户信息.

这是我无法绕过我的头脑,我应该使用/存储哪一个来识别用户?我想到了使用其中每一个的可能性,但我总是坚持如何检查用户之前是否已登录...

zer*_*kms 13

如果您只需要身份验证,那么仅存储user_id就足够了.

所以创建另一个表,如:

id | service_name | user_id | my_user_id
Run Code Online (Sandbox Code Playgroud)

其中,service_name要么是twitterfacebook,user_id-是从Twitter/Facebook的用户ID和my_user_id一个user_id在您的身份验证系统.

所以:

SELECT my_user_id FROM oauths WHERE service_name = 'twitter' AND user_id = 42
Run Code Online (Sandbox Code Playgroud)

会返回你的系统user_id或什么都没有

PS:service_name可以(并且应该)进行规范化,我将其保留为字符串只是为了简化示例

PPS:正如你在评论中所说,你可能想要"发帖/发推".

在这种情况下,您需要为twitter存储用户的访问令牌,并且不为facebook存储任何其他内容,但publish_stream在验证用户时请求权限.