什么是Facebook / Twitter OAuth令牌?

时间:2012-06-15 01:08:01

标签: oauth token twitter-oauth

好的,我真的知道它是什么。我很久以前就使用过Facebook / Twitter API。它有效,没有错误,抱歉:)。然而,以下事情困扰着我。

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

默认情况下,我收到的令牌时间有限。但是,当我使用离线访问请求API时,我收到的令牌将永久有效,没有时间限制。令牌应该以这种方式存储在OAuth提供程序数据库中吗?如果是这样,是什么阻止用户生成毫秒级的令牌?如果有很多令牌并且所有令牌都存储在没有时间限制的数据库中会怎么样?然后数据库变成垃圾堆。这是真的吗?

我对如何存储令牌有两个假设:

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

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

  3. 第二个问题。如果我想开发自己的OAuth提供商,最好的存储令牌的方法是什么?

1 个答案:

答案 0 :(得分:2)

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

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