2017-07-28 18 views
0

現在、Googleにオブジェクトを送信するように設定しようとしています(S2AP)。google-auth-library-rubyでエンコードJWT 0.9+

jwt = { 
    "iss"=> SERVICE_ACCOUNT_EMAIL_ADDRESS, 
    "aud" => "google", 
    "typ" => "savetoandroidpay", 
    "iat"=> Time.now.utc.to_i, 
    "payload" => { 
    "loyaltyObjects" => [], #Loyalty objects 
    "offerObjects" => [], #Offer objects 
    "loyaltyClasses" => [], #Loyalty classes 
    "offerClasses" => [] #Offer classes 
    }, 
    "origins"=> ['http://baconrista.com', 'https://baconrista.com'] 
} 
private_key = Google::APIClient::PKCS12.load_key(SERVICE_ACCOUNT_PRIVATE_KEY, 'notasecret') 
jwtEncoded = JWT.encode(jwt, private_key, "RS256") 

しかし、0.8はもはや標準ではない、とGoogle::APIClientはもはやサポートされているので、私は計算から提供JSONファイルとそのJWTに署名する方法を見つけることはできません。 GoogleはthisのようなJWTsに署名することを推奨していますエンジンサービスアカウント。

私は現在、OAuth2認証を使用してgoogles APIを使用してアクセストークンを生成するための設定はすべて行っていますが、これらのJWTをエンコードする方法についてはわかりません。参考までに、これはあなたが完全に終了していない新しいサービスを(使用してJWTに署名する能力の欠如を回避するにはルビーgem

compute = Google::Apis::ComputeV1::ComputeService.new 
File.open(CONFIG[:GOOGLE_APPLICATION_CREDENTIALS], "r") do |json_io| 
    compute.authorization = Google::Auth::DefaultCredentials.make_creds(scope: 'https://www.googleapis.com/auth/wallet_object.issuer', json_key_io: json_io) 
end 
TOKEN = compute.authorization.fetch_access_token! 

答えて

0

でGoogleからのアクセストークンを取得する方法

です)私はそのようにようにそれに署名し、彼らが持っているJSONのキーファイルのうち、PRIVATE_KEYを引っ張ってしまった:

def create_signed_JWT(obj, type) 
    JSON.parse(File.open(keyfile.path, 'rb').read) 
    jwt = { 
    iss: credentials['client_email'], 
    aud: "google", 
    typ: "savetoandroidpay", 
    iat: Time.now.utc.to_i, 
    payload: { 
     "#{type}Objects": obj 
    }, 
    origins: [ "https://#{CONFIG[:domain]}", "http://#{CONFIG[:domain]}" ] 
    } 
    JWT.encode(jwt, OpenSSL::PKey::RSA.new(credentials['private_key'], nil), "RS256") 
end 

objが 型がオブジェクト

の一種で、JSON形式で提供/忠誠の対象であります
関連する問題