什么是Facebook/Twitter OAuth令牌?

什么是Facebook/Twitter OAuth令牌?,oauth,token,twitter-oauth,Oauth,Token,Twitter Oauth,好的,我真的知道是什么。我很久以前就在使用Facebook/Twitter API。它工作正常,没有bug,抱歉:)。然而,下面的事情困扰着我 OAuth提供者端的令牌是什么?我只从客户端看到令牌。但有一件有趣的事。这很容易理解 默认情况下,我接收的令牌在时间上是有限的。但是,当我请求一个带有离线访问的API时,我收到的令牌将永久工作,没有时间限制。令牌应该以这种方式存储在OAuth提供者数据库中吗?如果是这样,是什么阻止用户生成数以百万计的令牌?如果有很多令牌,并且它们都存储在数据库中,没有时

好的,我真的知道是什么。我很久以前就在使用Facebook/Twitter API。它工作正常,没有bug,抱歉:)。然而,下面的事情困扰着我

OAuth提供者端的令牌是什么?我只从客户端看到令牌。但有一件有趣的事。这很容易理解

默认情况下,我接收的令牌在时间上是有限的。但是,当我请求一个带有离线访问的API时,我收到的令牌将永久工作,没有时间限制。令牌应该以这种方式存储在OAuth提供者数据库中吗?如果是这样,是什么阻止用户生成数以百万计的令牌?如果有很多令牌,并且它们都存储在数据库中,没有时间限制,该怎么办?然后,数据库变成一个垃圾堆。这是真的吗

我对代币的存储方式有两个假设:

  • 令牌是一个简单的id,用于分配给它的一组访问权限,每个令牌都存储在OAuth提供者端

  • 令牌是一个独立的概念。访问权限被加密并打包到令牌中,然后在提供者端解密。令牌生存期也包含在其中


  • 第二个问题。如果我想开发自己的OAuth提供者,存储令牌的最佳方式是什么?

    OAuth令牌只是一个ID,不包含任何信息。事实上,如果令牌包含真实信息,那就不太好了,因为这样会更容易被黑客攻击。提供者将该令牌与您的应用程序帐户关联,并将其所需的任何信息存储在自己的数据库中。我不知道Facebook,但Twitter OAuth令牌不会过期,除非所有者重新生成它们

    在执行OAuth时,您将知道使用您的程序的用户是谁,并拥有自己的数据库表来保存用户数据。在用户的第一次OAuth身份验证时,获取他们的凭据并将其保存在数据库中。然后,在您对服务(即Twitter)进行的每个后续查询中,重新加载这些凭据,以便用户不必再次进行身份验证。如果使用当前凭据的查询失败,您可能需要重新验证并保存新凭据,以防旧凭据因某种原因过期。这样,您的系统中每个用户只有OAuth令牌,您可以管理该用户的生命周期