2014-09-03 152 views
1

我正在发出一个OAuth 2.0请求,它将返回给我JSON与refresh_token and access_token,为什么OAuth2.0中有2个?在Oauth2.0中刷新令牌

  • 哪一个是短命的?
  • 两者的用途是什么?

read this question上SO但didn'e帮了我很多,在这方面的任何帮助将不胜感激 感谢

回答

1

access token是你将用什么来验证您的服务请求。它通常包含有关用户的详细信息,或者直接映射到有关用户的权限以及他已授予的权限。
这些令牌寿命很短 - 类似于一小时,实际持续时间因供应商而异。

另一方面,refresh tokens用于在您已过期的令牌获取新的访问令牌时使用。他们有更长的时间(有时是无限的,直到明确撤销)的一生。

现在,让我们考虑一个端到端场景。比方说,你创建一个应用程序,并代表用户的Facebook的行动 - 在他们的时间表后等

  • 您的应用程序将用户重定向到登录到Facebook - 你使用Facebook SDK这一点。
  • 当用户成功登录并为您提供所需的权限(在时间轴上发布)时,您将获得访问令牌和刷新令牌。
  • 您的应用程序现在可以点击Facebook API以代表他的用户时间轴发布访问令牌。此令牌可用于一个小时(或访问令牌有效的任何时间)
  • 一旦令牌即将过期,您可以点击Facebook API刷新访问令牌,因为此令牌即将到期。所以,你用refresh + access tokens调用API。
  • API会为您返回一个新的访问令牌 - 您可以立即使用它,直到它过期。

PS - 这实际上并不是这种情况。这只是一个随机的例子来解释刷新和访问令牌的不同之处。

如果这是有道理的,回到你已经链接的问题。它有一些非常好的答案。 :)

+0

真棒,现在的其他问题是有道理的...... PS对不起,我无法upvote你的答案,由于声誉,谢谢你:) – user3646405 2014-09-06 19:22:38

+0

这很好。很高兴解释帮助。 – divyanshm 2014-09-08 03:01:16

+0

因此,看起来刷新令牌的主要优势在于用户不必明确授予您的应用执行操作的权限 - 他们授予一次权限,您会收到访问令牌/刷新令牌,然后您使用刷新令牌以获得另一个访问令牌?我想这就是为什么授权类型是request_token? – DIMMSum 2014-10-23 18:32:28