Podio Oauth - 刷新令牌寿命

Rai*_*ter 1 oauth podio refresh-token

我目前正在研究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调用)或只是固定数量时,以及在什么情况下(不活动或时间过去),获取刷新令牌的确切流程是什么,它是否需要用户重新认证?

Bra*_*eed 5

这里有两个部分,访问令牌刷新令牌.

访问令牌在通过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=******
Run Code Online (Sandbox Code Playgroud)

回应机构:

{
  "access_token": "******9c2",
  "expires_in": 28800,
  "token_type": "bearer",
  "scope": "global:all",
  "ref": {
    "type": "user",
    "id": ******
  },
  "refresh_token": "******04a"
}
Run Code Online (Sandbox Code Playgroud)

获取新访问令牌的示例请求(使用相同的刷新令牌):

注意:请求正文中的任何额外空白字符都可能导致问题.这是我在试验时碰到的一个问题.

请求:

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
Run Code Online (Sandbox Code Playgroud)

回应机构:

{
  "access_token": "******676",
  "expires_in": 28800,
  "token_type": "bearer",
  "scope": "global:all",
  "ref": {
    "type": "user",
    "id": ******
  },
  "refresh_token": "******04a"
}
Run Code Online (Sandbox Code Playgroud)

重要的是要注意刷新令牌的值不会改变,并且可以重复使用以获得新的访问令牌.


TL; DR - 如果您不使用刷新令牌,它将在28天后过期.每当您使用刷新令牌获取新的访问令牌时,刷新令牌的到期计时器都会重置.