Library Klien Cloud untuk Java menggunakan
Library Google Auth untuk Java
untuk mengautentikasi permintaan. Library ini mendukung beberapa jenis autentikasi.
Untuk mengetahui detail selengkapnya, lihat README.md
dan javadoc project.
Autentikasi di lingkungan Google Cloud
Saat menggunakan library Google Cloud dari lingkungan Google Cloud (seperti Compute Engine, Google Kubernetes Engine, atau App Engine), Anda tidak perlu melakukan langkah-langkah autentikasi tambahan.
Contoh panggilan tanpa autentikasi tambahan:
Storage storage = StorageOptions.getDefaultInstance().getService();
Autentikasi di lingkungan non-Google Cloud
Untuk melakukan autentikasi di lingkungan non-Google Cloud , ada tiga opsi umum:
- (Direkomendasikan) Gunakan akun layanan.
- Gunakan Google Cloud SDK dengan lingkungan pengujian lokal.
- Gunakan token akses OAuth2 yang ada.
Menggunakan akun layanan
Setelah mendownload kunci, Anda harus melakukan salah satu tindakan berikut:
- Tentukan variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALSsebagai lokasi kunci. Contoh:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json- Berikan file kredensial JSON saat membuat opsi layanan. Misalnya, objek
Storageini memiliki izin yang diperlukan untuk berinteraksi dengan data Cloud Storage Anda:
Storage storage = StorageOptions.newBuilder() .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json"))) .build() .getService();- Tentukan variabel lingkungan
Menggunakan Google Cloud SDK dengan lingkungan pengujian lokal
Jika menggunakan lingkungan lokal untuk pengembangan atau pengujian, Anda dapat menggunakan Google Cloud SDK.
Buat Kredensial Default Aplikasi dengan
gcloud auth application-default login. Library Klien Cloud untuk Java akan
mendeteksi kredensial ini secara otomatis.
Menggunakan token akses OAuth2 yang ada
Jika memiliki token akses OAuth2, Anda dapat menggunakannya untuk mengautentikasi. Jika Anda melakukannya, token akses tidak akan diperbarui secara otomatis:
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
Storage storage = StorageOptions.newBuilder()
.setCredentials(credentials)
.build()
.getService();
Contoh lain:
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
CloudTasksSettings cloudTasksSettings = CloudTasksSettings.newBuilder()
.setCredentialProvider(FixedCredentialsProvider.create(credentials))
.build();
CloudTasksClient cloudTasksClient = CloudTasksClient.create(cloudTasksSettings);
Kredensial Default Aplikasi
Jika Anda tidak memberikan kredensial, Library Klien Cloud untuk Java akan mencoba mendeteksinya dari lingkungan menggunakan GoogleCredentials.getApplicationDefault().
Metode ini menelusuri Kredensial Default Aplikasi di lokasi berikut, secara berurutan:
- File kredensial yang ditunjukkan oleh variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS. - Kredensial yang disediakan oleh perintah
gcloud auth application-default loginGoogle Cloud SDK. - Kredensial bawaan Google App Engine.
- Google Cloud Kredensial bawaan Shell.
- Kredensial akun layanan bawaan Google Compute Engine.
Autentikasi dengan kunci API
Beberapa Google Cloud API mendukung autentikasi dengan kunci API.
Untuk menggunakan kunci API dengan Library Klien Cloud untuk Java, Anda harus menetapkan header x-goog-api-key secara manual untuk klien layanan yang relevan.
Misalnya, untuk menyetel kunci API dengan
Language service:
public LanguageServiceClient createGrpcClientWithApiKey(String apiKey) throws Exception {
// Manually set the API key using the header
Map<String, String> header = new HashMap<String, String>() { {put("x-goog-api-key", apiKey);}};
FixedHeaderProvider headerProvider = FixedHeaderProvider.create(header);
// Create the client
TransportChannelProvider transportChannelProvider = InstantiatingGrpcChannelProvider.newBuilder().setHeaderProvider(headerProvider).build();
LanguageServiceSettings settings = LanguageServiceSettings.newBuilder().setTransportChannelProvider(transportChannelProvider).build();
LanguageServiceClient client = LanguageServiceClient.create(settings);
return client;
}
Contoh pembuatan instance dengan Language Client menggunakan REST:
public LanguageServiceClient createRestClientWithApiKey(String apiKey) throws Exception {
// Manually set the API key header
Map<String, String> header = new HashMap<String, String>() { {put("x-goog-api-key", apiKey);}};
FixedHeaderProvider headerProvider = FixedHeaderProvider.create(header);
// Create the client
TransportChannelProvider transportChannelProvider = InstantiatingHttpJsonChannelProvider.newBuilder().setHeaderProvider(headerProvider).build();
LanguageServiceSettings settings = LanguageServiceSettings.newBuilder().setTransportChannelProvider(transportChannelProvider).build();
LanguageServiceClient client = LanguageServiceClient.create(settings);
return client;
}