这里有两个部分在起作用,访问令牌和刷新令牌。
访问令牌在通过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 天后过期。每当您使用刷新令牌获取新的访问令牌时,刷新令牌的到期计时器都会重置。