如何使用jwt for applestore connect API处理ruby文件

2jcobegt  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(79)

我一直在努力签署jwt,我不熟悉苹果在WWDC上提供的ruby文件。代码如下:

require "base64"
require "jwt"

ISSUER_ID = "your-ID"
KEY_ID = "your-KeyID"

private_key = OpenSSL::PKey.read(File.read())

token = JWT.encode(
   {
    iss: ISSUER_ID,
    exp: Time.now.to_i + 20 * 60,
    aud: "appstoreconnect-v1"
   },
   private_key,
   "ES256",
   header_fields={
     kid: KEY_ID }
 )
puts token

当我在终端上运行它时,代码一直给我这个错误:

我的目标很简单,我只是想从GET API返回一些数据,但我正在与Postman上的401错误作斗争。

tjjdgumg

tjjdgumg1#

根据你发布的截图,你的代码中有一个语法错误。
在您的代码示例中还有一个错误或配置错误。
在ruby中最常用于编码/解码JWT的gem是here;这是你在你的例子中使用的gem(通过require "jwt")在那个页面上有很多例子你可以参考,但是如果你仔细阅读自述文件,你会注意到他们提到你只能使用kidRSA,而你在你的例子中没有使用RSA
试试这个:

token = JWT.encode(
   {
    iss: ISSUER_ID,
    exp: Time.now.to_i + 20 * 60,
    aud: "appstoreconnect-v1"
   },
   private_key,
   "ES256"
)

这里有一个使用JWK与kidRSA算法的链接。
在同一页面上搜索ecdsa_key,以获得ES256的示例(您将找到我上面发布的示例)。
查看WWDC文档中的原始示例可能有助于为正确的配置提供额外的上下文,但我不确定在哪里可以找到该文档。如果它是公开的,你可以链接到它,我可以跟进。

相关问题