Ios 返回Apple refresh token validation only access token登录

Ios 返回Apple refresh token validation only access token登录,ios,node.js,flutter,refresh-token,sign-in-with-apple,Ios,Node.js,Flutter,Refresh Token,Sign In With Apple,我正在使用服务器中的AppleAuthnpm包在使用Apple登录过程中向Apple服务器提交令牌请求。(这是基于在pub.dev中提供的示例服务器代码)我在提交授权代码以获得第一次访问和刷新令牌时没有问题 但是,当尝试测试我的应用程序如何获得新的刷新令牌时,当我将grant_type设置为refresh_令牌时,我得到的响应与将grant_type设置为authorization_code不同 我查看了包的源代码,并查看了包的AppleAuth(myConfig).refreshToken(m

我正在使用服务器中的AppleAuthnpm包在使用Apple登录过程中向Apple服务器提交令牌请求。(这是基于在pub.dev中提供的示例服务器代码)我在提交授权代码以获得第一次访问和刷新令牌时没有问题

但是,当尝试测试我的应用程序如何获得新的刷新令牌时,当我将
grant_type
设置为
refresh_令牌时,我得到的响应与将
grant_type
设置为
authorization_code
不同


我查看了包的源代码,并查看了包的
AppleAuth(myConfig).refreshToken(myRefreshToken)
(在刷新令牌授予响应中是否获得新的“滚动/旋转”刷新令牌通常取决于供应商:

  • 您可能偶尔会获得一个新的刷新令牌,但并非总是如此
  • 此消息的主要目的是获取新的访问令牌,而不是新的刷新令牌
就令牌处理而言,客户端应该更新其令牌,类似于中的saveTokens方法

我没有在Apple上使用登录,但我怀疑按照以下步骤进行操作将是最简单的解决方案:

  • 使访问令牌保持短期:不超过60分钟
  • 这将强制频繁刷新令牌,默认情况下刷新速度非常快
  • 如果用户的Apple Id被撤销,我希望这会返回一个无效的\u grant响应

是的,问题是苹果现在甚至没有使用访问令牌。他们的文档说这是无用的,保留用于未来用途,现在所有东西都保存在他们提供的身份令牌中。你需要在请求中向他们的/token端点提交刷新令牌:在你的saveTokens方法中,你基本上是说如果旧的刷新\u令牌仍然有效,则不会返回新的“滚动”令牌?在中,授权服务器可能会在对刷新令牌授予消息的响应中忽略刷新令牌。这向客户端指示应继续使用现有的刷新令牌。作为客户端,您应为这两种类型的响应做好准备。
{
 grant_type: 'refresh_token', // instead of grant_type: 'authorization_code'
 refresh_token: refreshToken, // instead of code: authorizationCode
 ... // other params
}