新的Apple ID登录无效授予问题

时间:2019-08-12 15:29:02

标签: ios oauth signing apple-id

到目前为止,我一直遵循this post,它对我有很大帮助,但是,我现在得到了“ invalid_grant”。 以下内容:https://developer.apple.com/documentation/signinwithapplerestapi/errorresponse我了解由于授权授予或刷新令牌无效,我遇到了一个问题。

尽管进行了搜索和尝试(和重试),但我仍然受困,并且我不知道它来自何处。我使用了https://developer.apple.com/documentation/authenticationservices/adding_the_sign_in_with_apple_flow_to_your_app

上给出的应用

现在我从上面的应用程序中获取了令牌,我尝试从C#后端对其进行验证,但得到400响应代码invalid_grant

我从帖子中可以注意到的唯一区别是,与下图相比,我没有来自门户的任何[Verify]按钮(选项)或[Download]按钮。我不知道这是否相关,但我正在尝试提供尽可能多的详细信息:

enter image description here


希望有人可以提供帮助,谢谢您的帮助:)如果需要,随时询问更多详情

最大

2 个答案:

答案 0 :(得分:3)

我也遇到了同样的问题,我在这里找到了解决方案:

https://forums.developer.apple.com/thread/118135

如链接中所述,当您使用从应用程序获取的代码时,应使用应用程序ID代替服务ID。

答案 1 :(得分:1)

您能否分享您尝试创建JWT的方式? 我已经正确地尝试了几件事,我也知道(这也不起作用,如果我找到一个真正的解决方案,就会更新)

const string iss = "7#######G"; //  team ID 
            const string aud = "https://appleid.apple.com";
            const string sub = "com.######.weblogin"; // serviceid
            const string privateKey = "MIGTA#######"; // contents of .p8 file     

            var d = DateTime.UtcNow.AddDays(-5);

            var cngKey = CngKey.Import(
              Convert.FromBase64String(privateKey),
              CngKeyBlobFormat.Pkcs8PrivateBlob);


            var handler = new JwtSecurityTokenHandler();


            var securityKey = new ECDsaSecurityKey(new ECDsaCng(cngKey) { KeySize = 256 , HashAlgorithm = CngAlgorithm.ECDsaP256});


            securityKey.KeyId = "G#######W";
            var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.EcdsaSha256);

            return  handler.CreateEncodedJwt(iss, aud, new ClaimsIdentity(new List<Claim> { new Claim("sub", sub) }),d, expires: d.AddMonths(3),d, signingCredentials: signingCredentials);

标题看起来像是jwt中的,从我收集到的内容来看,可能有一个“ typ”标题在很多情况下都不存在,也许我应该摆脱它:

{
  "alg": "ES256",
  "kid": "G#######W",
  "typ": "JWT"
}

正文:

{
  "sub": "com.#####.weblogin",
  "nbf": 1583088895,
  "exp": 1591037695,
  "iat": 1583088895,
  "iss": "7######G",//teamid
  "aud": "https://appleid.apple.com"
}