我目前正在研究Podio集成,我偶然发现了一些文章,这些文章没有给出明确的答案,刷新资本是否会自动失效,在这种情况下获取新刷新令牌的确切流程是什么.
文章:
Podio刷新令牌到期 - 它不会过期(从用户名中有Podio的人回答,最近)
https://help.podio.com/hc/en-us/community/posts/206669587-Get-new-refresh-token - 它过期了,你把它作为响应的一部分而不是rly?有一些讨论没有结论
我问这个是因为我使用了很多服务和OAuth实现,但它是第一次刷新令牌实际上变得无效.那么如果28天过去了那么用户必须重新认证?或者只是令牌无效但"授权"仍然存在?我不得不说它很混乱,因为我习惯于接近grant ==刷新令牌,但我理解它与OAuth规范有关.另外我们只想在db中存储刷新令牌.我很想测试它,但我不想等待28天.
文档没有明确说明刷新令牌的生命周期是什么.
我喜欢Podio的某个人给出明确的答案.刷新令牌是否过期,只有在完全不活动(没有api调用)或只是固定数量时,以及在什么情况下(不活动或时间过去),获取刷新令牌的确切流程是什么,它是否需要用户重新认证?
这里有两个部分,访问令牌和刷新令牌.
访问令牌在通过expires_in属性指定的时间间隔后到期.
如果未使用超过28天,刷新令牌可能会过期.每次使用刷新令牌请求新的访问令牌时,计时器都会重置,并且在刷新令牌到期之前还有28天.如果您在28天内定期获得新的访问令牌,则可以假设无限期地使用相同的刷新令牌.
示例获取初始访问令牌和刷新令牌的HTTP请求(使用星号编辑的值):
POST /oauth/token HTTP/1.1 Host: podio.com Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache grant_type=password&username=******&password=******&client_id=******&client_secret=******
回应机构:
{ "access_token": "******9c2", "expires_in": 28800, "token_type": "bearer", "scope": "global:all", "ref": { "type": "user", "id": ****** }, "refresh_token": "******04a" }
获取新访问令牌的示例请求(使用相同的刷新令牌):
注意:请求正文中的任何额外空白字符都可能导致问题.这是我在试验时碰到的一个问题.
请求:
POST /oauth/token HTTP/1.1 Host: api.podio.com Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache grant_type=refresh_token&client_id=******&client_secret=******&refresh_token=******04a
回应机构:
{ "access_token": "******676", "expires_in": 28800, "token_type": "bearer", "scope": "global:all", "ref": { "type": "user", "id": ****** }, "refresh_token": "******04a" }
重要的是要注意刷新令牌的值不会改变,并且可以重复使用以获得新的访问令牌.
TL; DR - 如果您不使用刷新令牌,它将在28天后过期.每当您使用刷新令牌获取新的访问令牌时,刷新令牌的到期计时器都会重置.