Я пытаюсь сгенерировать токен для подписи моих запросов к API iTunes Connect. Это мой файл Ruby:
require "jwt"
require 'openssl'
ISSUER_ID = "my issuer string"
KEY_ID = "my key id string"
key_file = File.read('my p8 file containing my private key') # Located at the same folder than my ruby file
private_key = OpenSSL::PKey::RSA.new(key_file)
payload = {
'iss': ISSUER_ID,
'exp': 1528408800,
'aud': 'appstoreconnect-v1'
}
header = {
'alg': 'ES256',
'kid': KEY_ID,
'typ': 'JWT'
}
jwt = JWT.encode(payload, private_key, algorithm='ES256', header)
puts jwt
Если я запускаю этот файл ruby jwt.rb
, я получаю следующий вывод:
/ Библиотека / Ruby / Gems / 2.3.0 / gems / jwt-2.1.0 / lib / jwt / algos / ecdsa.rb: 15: в знаке ': неопределенная группа методов' для # (NoMethodError)
из /Library/Ruby/Gems/2.3.0/gems/jwt-2.1.0/lib/jwt/signature.rb:35:in sign '
из /Library/Ruby/Gems/2.3.0/gems/jwt-2.1.0/lib/jwt/encode.rb:39:in encoded_signature '
из /Library/Ruby/Gems/2.3.0/gems/jwt-2.1.0/lib/jwt/encode.rb:47:in encode_segments '
из /Library/Ruby/Gems/2.3.0/gems/jwt-2.1.0/lib/jwt/encode.rb:20:in initialize '
из /Library/Ruby/Gems/2.3.0/gems/jwt-2.1.0/lib/jwt.rb:21:in new '
из /Library/Ruby/Gems/2.3.0/gems/jwt-2.1.0/lib/jwt.rb:21:in encode '
от jwt.rb: 22: в '
По выводу на консоль трудно сказать, что не работает, но если бы я использовал RS256 в качестве алгоритма и пропустил заголовок, скрипт успешно сгенерировал бы токен.