1

私はGoogle App Engineにインストールする予定の製品を開発中です。私はGmailのAPI、ドライブのAPI、カレンダーAPIなどの認証としてダウンロードP12ファイルと細かい作業Google App Engineにダウンロードしたキーなしでサービスアカウントを認証

その認証にサービスアカウントを使用しています。この中

。しかし、私はその製品として、インストールするたびにクライアントがダウンロードしてアプリケーションにアップロードすることを望まない。

プライベートキーファイルなしで、またはサービスアカウントなしでそのAPIを使用して認証する方法がありますか。

このページでは、システム管理の鍵ペアがGoogleによって自動的に管理されていることが記載されています。それは役に立ちますか?私はそれの例を見つけませんでした。以下で

https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts.keys

Googleのクラウドプラットフォームのために、私はGoogleがキー https://cloud.google.com/iam/docs/understanding-service-accounts

をマネージド使用すべきことを示唆している、それをリンクし、このキーは、ダウンロードしたファイルなしで使用することはできますか?

おかげ

+0

p12ファイルを使用する必要はありません。 jsonキーファイル。 – DaImTo

+0

@DaImToコメントありがとうございました。どちらのファイルも使用できることは知られていますが、問題は解決しません。私はちょうどユーザーがキーを作成し、アプリでファイルをアップロードしたくない。少なくとも、キーを作成し、APIを使用してサーバー上で直接ファイルをダウンロードする方法がある場合。それは参考になるでしょう。 – compyutech

答えて

1

私はIAM APIによって以下 https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts.keys

それを達成できるJavaコードは、任意のキーを

InputStream stream = new ByteArrayInputStream(key.decodePrivateKeyData()); 
GoogleCredential credential = GoogleCredential.fromStream(stream); 
以下のようGoogleCredentialを生成するために使用することができ、それを

AppIdentityCredential credential = new AppIdentityCredential(
       Arrays.asList("https://www.googleapis.com/auth/cloud-platform")); 
Iam iam = new Iam(httpTRANSPORT, jsonFACTORY, credential); 
try { 
    Iam.Projects.ServiceAccounts.Keys.Create keyCreate = iam.projects().serviceAccounts().keys() 
        .create("projects/myProject/serviceAccounts/[email protected]", new CreateServiceAccountKeyRequest()); 

    ServiceAccountKey key = keyCreate.execute(); 

} catch (IOException e) { 
    System.out.println(e.getMessage()); 
} 

です

関連する問題