我目前正在研究Podio集成,我偶然发现一些文章没有明确回答refresh_token是否会自行过期,以及在这种情况下获得新刷新令牌的确切流程。
文章:
Podio刷新令牌到期-它不会过期(来自用户名中有Podio的人的回答,最近)
https://help.podio.com/hc/en-us/community/posts/206669587-Get-new-refresh-token-它过期了,你把它作为响应的一部分,但不是rly?有一些讨论没有结论
我之所以这么问,是因为我使用了很多服务和OAuth实现,但刷新令牌实际上是第一次失效。所以,若28天过去了,那个么用户必须重新进行身份验证?或者只是一个令牌失效,但"授予"仍然存在?我不得不说这很令人困惑,因为我习惯于使用grant=refresh令牌,但我在OAuth规范中理解它。此外,我们只想将刷新令牌存储在数据库中。我很想测试一下,但我不想等28天。
文档没有明确说明刷新令牌的使用寿命。
我希望波迪奥的人能对此给出明确的答案。刷新令牌会过期吗?是只有在完全不活动(没有api调用)还是只有固定数量的情况下才会过期?在什么情况下(不活动或经过时间),获取刷新令牌的确切流程是什么?是否需要用户重新验证?
这里有两个部分在起作用,访问令牌和 刷新令牌访问令牌在通过expires_in属性指定的间隔之后过期。 如果未使用时间超过28天,则刷新令牌可能会过期。每次使用刷新令牌请求新的访问令牌时,计时器都会重置,并且在刷新令牌到期前还有28天。如果您在28天内定期获得新的访问令牌,则可以假设无限期使用相同的刷新令牌。 获取初始访问令牌和刷新令牌的HTTP请求示例(用星号编辑的值): 响应主体: 获取新访问令牌的示例请求(使用相同的刷新令牌): 注意:请求正文中任何额外的空白字符都可能导致问题。这是我在试验时遇到的一个问题。 请求: 响应主体: 需要注意的是,刷新令牌的值不会改变,可以重复使用以获得新的访问令牌。 TL;DR-如果您不使用刷新令牌,它将在28天后过期。每当使用刷新令牌获取新的访问令牌时,刷新令牌的过期计时器都会重置。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"
}