ios – 如何确定OAuth令牌是否已过期?

我的iOS移动应用程序消耗使用OAuth2.0协议实现的服务. OAuth访问令牌带有刷新令牌和expires_in字段.我在我的应用程序中保存了刷新令牌并访问令牌过期时间,但是在使用它们时并没有什么好主意.

>那么使用这个expires_in的通常和最佳做法是什么?
>如何识别我的访问令牌是否过期?
>是否有常见的Web服务错误格式,表示我的访问令牌已过期?

解决方法

以下是有关OAuth 2.0令牌刷新的信息.

定义到期

OAuth 2.0标准RFC 6749将expires_in字段定义为到期的秒数:

expires_in: RECOMMENDED. The lifetime in seconds of the access token. For example,the value “3600” denotes that the access token will expire in one hour from the time the response was generated. If omitted,the authorization server SHOULD provide the expiration time via other means or document the default value.

令牌刷新处理方法1

在收到有效的access_token,expires_in值,refresh_token等后,客户端可以通过存储到期时间并对每个请求进行检查来处理.这可以通过以下步骤完成:

>将expires_in转换为到期时间(纪元,ISO日期时间等)
>存储到期时间
>在每个资源请求上,根据过期时间检查当前时间,并在资源请求之前发出令牌刷新请求,如果access_token已过期

除了接收到一个新的access_token之外,您还可以在将来进一步收到一个新的refresh_token,其中有一个到期时间.如果您收到此消息,您应该存储新的refresh_token以延长会话的使用寿命.

令牌刷新处理方法2

处理令牌刷新的另一种方法是在收到无效令牌错误后手动刷新.这可以用以前的方法或者单独实现.

如果您尝试使用过期的access_token并且获得无效的令牌错误,则应执行令牌刷新(如果刷新令牌仍然有效).由于不同的服务可以为过期的令牌使用不同的错误代码,您可以跟踪每个服务的代码,也可以简单地在服务器上刷新令牌的方式是在遇到4xx错误时简单地尝试一次刷新.

访问令牌错误无效

以下是受欢迎服务的一些错误代码

> Facebook: Error 467 Invalid access token – 访问令牌已过期,已被撤销,否则无效 – 处理过期的访问令牌.
> LinkedIn: Error 401 Unauthorized.
> PayPal: Error 401 Unauthorized.

刷新令牌过期

如果您的refresh_token也已过期,您将需要再次通过授权过程.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...