微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Apple 登录 - 无法验证授权授予代码

如何解决使用 Apple 登录 - 无法验证授权授予代码

我正在努力将 Sign In with Apple 集成到我的应用中。该应用程序是使用 expo 用 React Native 编写的,我现在几乎完全使用这个组件。 https://docs.expo.io/versions/latest/sdk/apple-authentication/#usage

我已经能够使用此组件成功生成授权授予代码,但是,我无法在服务器端对其进行验证。这是我目前遇到的错误

{
    "error": "invalid_grant","error_description": "The code has expired or has been revoked."
}

详情

我已在我的应用中添加了使用 Apple 密钥登录并下载了私钥。我已将该应用发布到 TestFlight,因此我获得了自己的捆绑标识符,而不是模拟器中的 Expo。

这是来自第一个请求的授权授权代码的格式(格式不是 JSON,因为它是 go 的输出):

{
   realUserStatus:1,authorizationCode:xxxx,fullName:{
        middleName:null
        nameSuffix:null 
        namePrefix:null
        givenname:null 
        familyName:null
        nickname:null} 
   state:null 
   identityToken:xxxxxxx
   email:null 
   user:xxxxx      
}

我正在使用此库生成验证请求:https://github.com/pagnihotry/siwago 我正在从我的笔记本电脑(不是与应用程序关联的域)运行 go 脚本,并将信息复制/粘贴到 Postman .

两种方法都使用 x-www-form-urlencoded。 go 应用程序正在签署 client_secret,我认为这是正确的方法,因为我不再收到 400 invalid_client。我已解码 client_secret 并确认验证请求已格式化:

{
  "alg": "ES256","kid": "SECRET_KEY_ID"
}
{
  "iss": "TEAM_ID","iat": 1626740200,"exp": 1629332200,"aud": "https://appleid.apple.com","sub": "BUNDLE_ID"
}

我已确认客户端密钥是用我的私钥签名的,方法是根据我的私钥的公共补充对其进行验证。

https://appleid.apple.com/auth/token 请求授权的表单数据是(值上没有标点符号):

client_id: [BUNDLE_ID]
client_secret: [signed secret]
code: [authorizationCode] (from the Authorization grant code)
grant_type: authorization_code
redirect_uri: [left empty in go,not a key in Postman]

我反复请求我的授权码,并认为我可能会被限制,但后来我第一次尝试了一个全新的,但仍然收到了 invalid_grant 响应。

寻求任何帮助,过去两天我一直在做这件事,现在已经筋疲力尽了。

解决方法

我认为 Apple 的服务器需要更多时间,因为我在其他帖子中看到了与此类似的问题。我等了大约两天,再试一次,它没有问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。