新的 Apple 登录不断抛出错误 HTTP 400 Invalid_grant

2023-11-21

据苹果公司称doc为了验证 Apple 的授权码,我们需要 POST 到http://appleid.apple.com/auth/token使用这个参数:

#!java

token = generateJWT(keyId, teamId, clientId, certificatePath);

HttpResponse<String> response = Unirest.post(authUrl)
     .header("Content-Type", "application/x-www-form-urlencoded")
     .field("client_id", clientId)
     .field("client_secret", token)
     .field("grant_type", "authorization_code")
     .field("code", authorizationCode)
     .asString();

where:

  • 授权码:是应用客户端提供的授权码。

  • clientId:由苹果公司提供

  • token: 是客户端秘密。使用以下代码生成 JWT:

#!java

private static String generateJWT(String keyId, String teamId, String clientId, String certificatePath) throws Exception {
        if (pKey == null) {
            pKey = getPrivateKey(certificatePath);
        }

        return Jwts.builder()
                .setHeaderParam(JwsHeader.KEY_ID, keyId)
                .setIssuer(teamId)
                .setAudience("https://appleid.apple.com")
                .setSubject(clientId)
                .setExpiration(new Date(System.currentTimeMillis() + (1000 * 60 * 5)))
                .setIssuedAt(new Date(System.currentTimeMillis()))
                .signWith(pKey, SignatureAlgorithm.ES256)
                .compact();
    }

private static PrivateKey getPrivateKey(String certificatePath) throws Exception {
        //read your key
        try (PEMParser pemParser = new PEMParser(new FileReader(certificatePath))) {
            final JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
            final PrivateKeyInfo object = (PrivateKeyInfo) pemParser.readObject();
            final PrivateKey pKey = converter.getPrivateKey(object);
            return pKey;
        }
    }

我们检查 JWT 包含苹果所需的所有字段:

#!json

{
  "alg": "ES256",
  "typ": "JWT",
  "kid": "6876D87D6"
}
{
  "iat": 1578654031,
  "exp": 1578740431,
  "aud": "https://appleid.apple.com",
  "iss": "57675576576",
  "sub": "com.blahblah.client"
}

但这就是问题所在。它总是返回 400 HTTP 错误并带有以下正文:

#!json

{"error":"invalid_grant"}

从这里我们完全迷失了。我们不明白为什么代码不正确或者为什么它有 invalid_grant 错误。


就我而言,前端发送了identityToken错误地,而不是authorizationCode。这导致了b'{"error":"invalid_grant"}'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

新的 Apple 登录不断抛出错误 HTTP 400 Invalid_grant 的相关文章

  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 贴纸包会在模拟器上使 iMessage 崩溃,但在 iPhone 上不会崩溃

    按照 Apple 的在线说明和视频在 Xcode 中创建了一个贴纸包 所有图像的尺寸均正确且远低于文件大小阈值 如果我在我的实体 iPhone 上构建并运行贴纸包 一切都会完美运行 如果我在模拟器上构建并运行贴纸包 对于任何模拟的 iPho
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 非 Spring 托管类中 DI 的编译时编织

    我想为标记为的类配置编译时编织 Configurable注释能够将 spring 依赖项注入到初始化的类中new操作员 我不想使用加载时编织 因为我无权访问应用程序服务器的运行脚本 因此无法修改它 另外 我希望能够在测试中使用此类 我的意思
  • 叠加 SKScene 未显示

    我正在尝试将 SKScene 覆盖在 SCNScene 上 当我在模拟器和 iPhone6 上运行我的应用程序时 overlayScene SKScene 按预期显示 但是当我尝试在 iPhone5 上运行它 尝试了 2 个不同的设备 时
  • iOS:如何知道 reloadData() 已完成其任务?

    我想滚动到给定索引 self boldRowPath 但是当我调试时scrollToRow之前执行reloadData 如何知道reloadData已完成 func getAllTimeEvent self arrAllTimeEvent
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 在 Swift 中从 Parse 加载图像

    我成功地将数据从 Parse 提取到 swift 中 但我的图像似乎没有按照我的方式工作 在我的 cellForRowAtIndexPath 方法中 我执行以下操作 var event AnyObject eventContainerArr
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 更改 iOS7 中 UIAlertView 的字体大小

    我想更改alertView中消息文本和标题文本的字体大小 苹果网站上没有任何文档谈到这一点 但苹果在其子类注释中表示 UIAlertView 类旨在按原样使用 请参考以下链接 https developer apple com librar

随机推荐

  • 列出 Google 表格中的工作表名称并跳过前两个

    我找到了列出 Google 表格中所有工作表名称的代码 来自here function SheetNames Usage as custom function SheetNames GoogleClock try var sheets Sp
  • Python 中的双精度浮点值?

    是否有比 float 精度更高的数据类型 Python 内置的float类型具有双精度 它是 Cdouble在 CPython 中 Javadouble在 Jython 中 如果您需要更高的精度 请获取NumPy并使用其numpy floa
  • 使用 JAVA JNI 和 C++ 进行通用调用

    我正在使用 JNI 并且必须将一些泛型类型传递给 C 我不知道如何在 C 方面解决这个问题 HashMap
  • Spring MVC 继承类的验证

    我很难相信我是唯一一个想要这样做的人 但我找不到任何参考资料来帮助我克服障碍 使用 Spring MVC 和基于注释的验证 我使用框架 4 0 和 Java 1 7 考虑一个简单的类层次结构 如下所示 abstract class Foo
  • SQL Server存储过程插入多个表[重复]

    这个问题在这里已经有答案了 我有2张桌子 custlogin and custinfo custlogin custid int primary key auto notnull custusename varchar 25 custpas
  • 生成随机位 - C rand() 中缺乏随机性

    我在用rand 生成 0 或 1 rand 2 我正在使用当前时间 srand time NULL 经过多次调试 我意识到rand 永远不会连续返回 16 次或更多次偶数 奇数 这是一个已知的问题 C 附带有更好的 PRNG 吗 我使用 V
  • pandas groupby 应用于多个列以生成新列

    我喜欢使用 groupby apply 在 pandas 数据框中生成一个新列 例如 我有一个数据框 df pd DataFrame A 1 2 3 4 B A B A B C 0 0 1 1 并尝试通过 groupby apply 生成新
  • 如何获取字符串中某个模式的所有索引?

    我想要这样的东西 abcdab search a g return 0 4 是否可以 You can use the RegExp exec方法多次 var regex a g var str abcdab var result var m
  • 删除所有出现的新行和制表符

    我仍在学习一些不错的正则表达式 但我认为这会起作用 这有效 str replace g replace r n n r gm 但它的较短版本则不然 我哪里做错了 str replace g r n n r gm 正则表达式分隔符是 所以你有
  • JWT 和一次性令牌?

    我正在滚动我自己的 JWT 令牌身份验证 但是 我真的希望它是一次性令牌 因此一旦使用它 服务器会生成一个新令牌 并且客户端必须在期间使用该令牌下一个请求 调用 然而 据我了解 JWT 应该是 无状态的 但通过一次性令牌的方法 我想我需要以
  • 什么是 BOOST_ROOT?

    我正在尝试构建 x64 版本http code google com p quickfast 这就是构建脚本使用 BOOST ROOT 的方式 set SETUP CHECKING BOOST ROOT BOOST ROOT if not
  • Hibernate 表和列的自动保留字转义

    我正在尝试对几种不同的数据库使用一种 Hibernate 映射 H2 Oracle MySql 每个数据库都有不同的保留字列表 我希望 Hibernate 自动转义保留字 我知道我可以 使用反引号强制转义 为了安全起见 转义所有内容 更改所
  • JavaScript 中 {} 和 [] 之间的区别

    我正在研究 javascript 我遇到了这个 if i do let object object length 它会抱怨 object length 未定义 但 let object object length works 有谁知道为什么
  • nginx 和 uwsgi 服务器中 uwsgi 模块的区别

    我是linux开发新手 我对我读到的文档有点困惑 我的最终目标是托管一个简单的 python 支持的 Web 服务 该服务将检查传入的有效负载 并将其转发到其他服务器 这应该少于 30 行 Python 代码 我计划使用 nginx 来提供
  • 从 C 函数返回多个值

    重要的 请参阅这个非常相关的问题 在 C 中返回多个值 我想知道如何在 ANSI C 中做同样的事情 您会使用结构体还是传递函数中参数的地址 我追求极其高效 快速 的代码 时间和空间 即使以可读性为代价 EDIT 感谢所有的答案 好吧 我想
  • Scala 中的映射类型

    有没有办法从 Scala 中的现有类型派生类型 例如 对于case class Person name String age Int 我想要一个Product Tuple of Option String Option Int 即从现有类型
  • 如何修复警告“CoreUI:RunTimeThemeRefForBundleIdentifierAndName()无法在标识符为'(null)'的捆绑包中找到Assets.car”?

    我正在尝试在 iOS 13 beta 上测试应用程序 当我点击欢迎屏幕上的按钮以转到另一个屏幕时 应用程序冻结然后终止 当我在 Xcode 11 中调试时 我在控制台中看到以下警告行 框架 CoreUI RunTimeThemeRefFor
  • Java 中的 AES-256-CBC

    我正在尝试编写一个简单的 Java 程序 该程序将使用以下命令加密纯文本AES 256 CBC 有类 import javax crypto Cipher import javax crypto spec IvParameterSpec i
  • 第一个带有类的元素的 CSS 选择器

    我有一堆带有类名的元素red 但我似乎无法选择第一个元素class red 使用以下 CSS 规则 home red first child border 1px solid red div class home span blah spa
  • 新的 Apple 登录不断抛出错误 HTTP 400 Invalid_grant

    据苹果公司称doc为了验证 Apple 的授权码 我们需要 POST 到http appleid apple com auth token使用这个参数 java token generateJWT keyId teamId clientId