scope 有效期:这里的 scope 有效期和前面的 auth_code 有效期是两个概念。 scope 的有效期会影响开发者最终获取到的 access_token 和refresh_token 的有效期,不同 scope 的有效期请参考具体的产品文档。
建议:为了产品体验考虑请按需请求需要的 scope,过多的授权范围容易导致用户放弃授权。建议在做产品的登录场景中使用 auth_base 或者 auth_user 做用户引流,后续根据需要具体业务需要引导用户请求特定 scope 的用户授权。

access_token

有效期:access_token 取决于授权时指定的 scope 的有效期,如果授权时指定多个 scope,最终的 access_token 的有效期取决于有效期最短的 scope。 access_token 截止时间=(授权时间点)+(授权后调用 alipay.system.oauth.token 返回的 expires_in)。
令牌存储要求:
确保 access_token 的安全保存;
根据 appId + uid +单个 scope 为索引保存 access_token,否则会因为 appid 令牌混用和不同 scope 的令牌相互覆盖导致接口调用报错,若前后多次授权范围相同,仅保存授权截止时间最长的 access_token 即可。授权截止时间 = 授权时间点+ alipay.system.oauth.token 返回的 expires_in。
注意:用户可以取消授权,取消后 access_token 即使在有效期也无法使用。

refresh_token

说明:用auth_code 调用 alipay.system.oauth.token 接口获取 access_token 时会返回一个 refresh_token(刷新令牌),在refresh_token 有效期内可以通过 refresh_token 同样调用 alipay.system.oauth.token 刷新一个新的 access_token。
有效期:
refresh_token 取决于授权时指定的 scope 的有效期,如果授权时指定多个 scope,最终的 refresh_token 的有效期取决于有效期最短的 scope。
refresh_token 截止时间 =(第一次获得该 refresh_token 的时间 + alipay.system.oauth.token 返回的 re_expires_in)。
使用:
使用 refresh_token 调用 alipay.system.oauth.token。
刷新后可以得到一个新的 access_token,access_token 截止时间重新计算(对应可以看到 expires_in 不会变),原来的 accesss_token 会立即失效;同时会得到一个新的 refresh_token,原来的 refresh_token 会失效,新refresh_token 截止时间不会重新计算(对应可以看到 re_expires_in 会减少)。
注意:用户可以取消授权,取消后 refresh_token 即使在有效期也无法使用。