如何解决使用 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 举报,一经查实,本站将立刻删除。