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

Facebook 使用oAuth登录,我应该存储/使用什么来标识用户?,facebook,api,authentication,twitter,oauth,Facebook,Api,Authentication,Twitter,Oauth,我试图在我的应用程序中实现facebook/twitter功能登录,我阅读了oAuth上的一些指南,我想我理解了一些基本概念,下面是我理解的内容(如果我错了,请纠正我): myApp向oAuth提供程序发送请求,获取(A)请求令牌 发送用户对(A)进行身份验证,返回(B)已验证的请求令牌(这称为oAuth令牌吗?) 使用(B)获取(C)访问令牌 使用C访问用户信息 这是我无法理解的,我应该使用/存储哪一个来识别用户?我考虑过使用其中每一个的可能性,但我总是坚持如何检查用户是否已经登录之前 如果您

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

  • myApp向oAuth提供程序发送请求,获取(A)请求令牌
  • 发送用户对(A)进行身份验证,返回(B)已验证的请求令牌(这称为oAuth令牌吗?)
  • 使用(B)获取(C)访问令牌
  • 使用C访问用户信息

  • 这是我无法理解的,我应该使用/存储哪一个来识别用户?我考虑过使用其中每一个的可能性,但我总是坚持如何检查用户是否已经登录之前

    如果您只需要身份验证,那么只存储
    user\u id
    就足够了

    因此,创建另一个表,如:

    id | service_name | user_id | my_user_id
    
    其中
    service\u name
    twitter
    facebook
    user\u id
    -是来自twitter/facebook的用户id,
    my\u user\u id
    是身份验证系统中的
    用户id

    因此:

    将返回您的系统用户id或什么都不返回

    PS:
    service\u name
    可以(也应该)规范化,我将其作为字符串保存,只是为了简化一个示例

    PPS:正如您在评论中所说,您可能希望“发布/推文”


    在这种情况下,您需要为twitter存储用户的访问令牌,并为facebook存储任何其他内容,但在验证用户身份时请求
    publish\u stream
    权限。

    ,存储我们可以使用访问令牌访问的用户id?@那家伙:是的。来自oauth的用户idprovider@that_guy:顺便说一句,添加了关于发布的内容。。我的头还在显示加载条。。。但我想我明白了,谢谢!另一个问题,如果我使用提供者的用户id来识别用户,这是否意味着我每次都需要对令牌进行身份验证?那么我为什么要为twitter存储用户的访问令牌呢?或者我应该在用户每次登录时更新令牌的访问权限吗?
    SELECT my_user_id FROM oauths WHERE service_name = 'twitter' AND user_id = 42