Beberapa layanan Google, seperti Drive, Gmail, dan banyak lainnya, menyediakan API publik yang dapat Anda gunakan untuk membuat aplikasi yang membantu pengguna menggunakan data mereka di layanan ini. Untuk mengakses layanan ini, aplikasi harus menerapkan salah satu alur klien OAuth 2.0 untuk mendapatkan izin dari pengguna dan mendapatkan token akses, yang memberikan akses ke API.
Anda dapat menggunakan library Login dengan Google, yang mengimplementasikan alur OAuth 2.0 untuk Anda, guna mendapatkan token akses bagi pengguna yang login.
Prasyarat
Sebelum aplikasi iOS Anda dapat memanggil Google API, selesaikan langkah-langkah penyiapan berikut:
1. Mengaktifkan API untuk project Anda
Setiap aplikasi yang memanggil Google API harus mengaktifkan API tersebut di Konsol Google Cloud.
Untuk mengaktifkan API untuk project Anda:
- Buka Library API di Konsol Google Cloud.
- Jika diminta, pilih project atau buat project baru.
- Pilih API yang ingin Anda aktifkan, lalu klik Enable.
2. Membuat kredensial otorisasi
Setiap aplikasi iOS yang menggunakan OAuth 2.0 untuk mengakses Google API harus memiliki kredensial otorisasi yang mengidentifikasi aplikasi ke server otorisasi Google. Langkah-langkah berikut menjelaskan cara membuat kredensial untuk project Anda:
- Buka halaman Credentials di Konsol Google Cloud.
- Klik Create client (atau Create Credentials > OAuth client ID).
- Pilih jenis aplikasi iOS.
- Masukkan nama untuk klien OAuth. Nama ini mengidentifikasi klien di halaman Kredensial project Anda.
- Masukkan ID paket untuk aplikasi Anda. ID paket adalah nilai kunci
CFBundleIdentifierdiInfo.plistaplikasi Anda. Nilai ini biasanya ditampilkan di panel General atau panel Signing & Capabilities di editor project Xcode, atau di halaman App Information di Apple App Store Connect. Pastikan Anda menggunakan ID paket yang benar, karena ID ini tidak dapat diubah jika Anda menggunakan App Check. - (Opsional) Masukkan ID App Store aplikasi Anda jika aplikasi dipublikasikan di Apple App Store. ID Toko adalah string numerik yang disertakan dalam setiap URL Apple App Store.
- (Opsional) Masukkan ID Tim Anda. Lihat Menemukan ID Tim Anda dalam dokumentasi Akun Developer Apple. ID Tim diperlukan jika Anda mengaktifkan App Check untuk klien Anda.
- (Opsional) Aktifkan App Check untuk aplikasi iOS Anda. Saat Anda mengaktifkan App Check, layanan App Attest Apple digunakan untuk memverifikasi bahwa permintaan OAuth 2.0 yang berasal dari klien OAuth Anda adalah asli dan berasal dari aplikasi Anda, sehingga membantu mengurangi risiko peniruan identitas aplikasi.
- Klik Buat.
Client ID Anda akan dibuat dan ditampilkan di Konsol Google Cloud. Tambahkan
skema URL client ID terbalik (misalnya,
com.googleusercontent.apps.1234567890-abcdef) ke Info.plist aplikasi Anda untuk
menangani pengalihan otorisasi.
3. Menyelesaikan integrasi Login dengan Google di tingkat dasar
Selesaikan integrasi Login dengan Google dasar sebelum meminta cakupan inkremental dan memanggil Google API.
1. Memeriksa cakupan yang telah diberikan
Sebelum melakukan panggilan ke Google API, periksa cakupan mana yang telah
diberikan ke aplikasi Anda, menggunakan properti grantedScopes dari GIDGoogleUser:
Swift
let driveScope = "https://www.googleapis.com/auth/drive.readonly"
let grantedScopes = user.grantedScopes
if grantedScopes == nil || !grantedScopes!.contains(driveScope) {
// Request additional Drive scope.
}
Objective-C
NSString *driveScope = @"https://www.googleapis.com/auth/drive.readonly";
// Check if the user has granted the Drive scope
if (![user.grantedScopes containsObject:driveScope]) {
// request additional drive scope
}
Berdasarkan apakah cakupan tertentu telah diberikan oleh pengguna atau tidak, Anda mungkin perlu membuat permintaan untuk cakupan tambahan guna mendukung interaksi tertentu.
2. Meminta cakupan tambahan
Jika Anda perlu meminta cakupan tambahan, panggil
addScopes:presentingViewController:completion atau
addScopes:presentingWindow:completion untuk meminta pengguna memberikan akses tambahan
ke aplikasi Anda.
Misalnya, untuk meminta akses hanya baca ke file Drive pengguna:
Swift
let additionalScopes = ["https://www.googleapis.com/auth/drive.readonly"]
guard let currentUser = GIDSignIn.sharedInstance.currentUser else {
return ; /* Not signed in. */
}
currentUser.addScopes(additionalScopes, presenting: self) { signInResult, error in
guard error == nil else { return }
guard let signInResult = signInResult else { return }
// Check if the user granted access to the scopes you requested.
}
Objective-C
NSArray *additionalScopes = @[ @"https://www.googleapis.com/auth/drive.readonly" ];
GIDGoogleUser *currentUser = GIDSignIn.sharedInstance.currentUser;
[currentUser addScopes:additionalScopes
presentingViewController:self
completion:^(GIDSignInResult * _Nullable signInResult,
NSError * _Nullable error) {
if (error) { return; }
if (signInResult == nil) { return; }
// Check if the user granted access to the scopes you requested.
}];
3. Melakukan panggilan API dengan token baru
Untuk memastikan bahwa panggilan Google API Anda selalu memiliki token akses yang belum habis masa berlakunya, gabungkan panggilan dalam blok refreshTokensIfNeededWithCompletion::
Swift
currentUser.refreshTokensIfNeeded { user, error in
guard error == nil else { return }
guard let user = user else { return }
// Get the access token to attach it to a REST or gRPC request.
let accessToken = user.accessToken.tokenString
// Or, get an object that conforms to GTMFetcherAuthorizationProtocol for
// use with GTMAppAuth and the Google APIs client library.
let authorizer = user.fetcherAuthorizer()
}
Objective-C
[currentUser refreshTokensIfNeededWithCompletion:^(
GIDGoogleUser * _Nullable user,
NSError * _Nullable error) {
if (error) { return; }
if (user == nil) { return; }
// Get the access token to attach it to a REST or gRPC request.
NSString *accessToken = user.accessToken.tokenString;
// Or, get an object that conforms to GTMFetcherAuthorizationProtocol for
// use with GTMAppAuth and the Google APIs client library.
id<GTMFetcherAuthorizationProtocol> authorizer = [user fetcherAuthorizer];
}];
Gunakan token akses untuk memanggil API, dengan menyertakan token akses di header permintaan REST atau gRPC (Authorization: Bearer ACCESS_TOKEN), atau dengan menggunakan pengizinan pengambil dengan Library Klien Google API.