️ Dari plugin versi 6.0.0, versi minimum cordova-ios yang diperlukan adalah 4.5.0. Perlu menggunakan versi cordova-ios yang lebih rendah? Gunakan plugin versi 5.3.2 atau lebih rendah.
idToken
serverAuthCode
Plugin ini memungkinkan Anda mengautentikasi dan mengidentifikasi pengguna dengan Login dengan Google di iOS dan Android. Di luar kotak, Anda akan mendapatkan email, nama tampilan, nama pemberian, nama keluarga, url gambar profil, dan id pengguna. Anda juga dapat mengonfigurasinya untuk mendapatkan idToken dan serverAuthCode.
Plugin ini hanya membungkus akses ke Google Sign-In API. Akses API lebih lanjut harus diterapkan per kasus penggunaan, per pengembang.
Android
iOS
Untuk berkomunikasi dengan Google Anda perlu melakukan beberapa pengaturan yang membosankan, maaf.
(Sangat) disarankan agar Anda menggunakan proyek yang sama untuk iOS dan Android.
Masuk ke config.xml
Anda dan pastikan nama paket Anda (yaitu ID aplikasi) sesuai dengan yang Anda inginkan. Gunakan nama paket ini saat menyiapkan iOS dan Android pada langkah-langkah berikut! Jika tidak, kemungkinan besar Anda akan mendapatkan error 12501, 'pengguna dibatalkan' meskipun tidak pernah membatalkan proses login.
Langkah ini sangat penting jika Anda menggunakan kerangka kerja seperti Ionic untuk merancang proyek Anda. Saat Anda membuat proyek, config.xml
memiliki nama paket placeholder, misalnya com.ionic.*, sehingga Anda dapat segera mulai mengembangkannya.
xml version = ' 1.0 ' encoding = ' utf-8 ' ?>
< widget id = " ** REPLACE THIS VALUE ** " ...>
...
widget >
Platform browser memerlukan WEB_APPLICATION_CLIENT_ID
valid yang dihasilkan di Google Developer Console. Pastikan Anda telah menambahkan alamat url Anda (contoh: http://localhost:3000
) ke bagian Asal JavaScript Resmi . Lihat tangkapan layar ini misalnya
Untuk mendapatkan iOS Anda REVERSED_CLIENT_ID
, buat file konfigurasi di sini. File GoogleService-Info.plist
ini berisi REVERSED_CLIENT_ID
yang Anda perlukan selama instalasi. Nilai ini hanya diperlukan untuk iOS.
REVERSED_CLIENT_ID
juga dikenal sebagai "Skema URL iOS" di Konsol Pengembang.
Proses masuk di iOS membawa pengguna ke SafariViewController melalui Google SDK, bukan browser Safari terpisah.
Untuk mengonfigurasi Android, buat file konfigurasi di sini. Aktifkan Masuk dengan Google dan tambahkan Aplikasi Android untuk menambahkan sidik jari SHA1. Setelah Masuk dengan Google diaktifkan, Google akan secara otomatis membuat kredensial yang diperlukan di Konsol Pengembang untuk web dan Android. Tidak perlu menambahkan file google-services.json yang dihasilkan ke dalam proyek cordova Anda. Anda mungkin perlu mengonfigurasi layar persetujuan.
Pastikan Anda menjalankan langkah-langkah keytool
seperti yang dijelaskan di sini atau autentikasi akan gagal (lakukan ini untuk rilis dan debug keystore).
PENTING:
keytool
, tampilkan 2 jenis sidik jari sertifikat, Rilis dan Debug , saat membuat file konfigurasi, lebih baik menggunakan sidik jari sertifikat Debug , setelah itu, Anda harus membuka Google Credentials Manager, dan membuat secara manual kredensial untuk klien OAuth2 dengan sidik jari sertifikat Rilis Anda. Hal ini diperlukan agar aplikasi Anda berfungsi pada rilis Pengembangan dan Produksi. $ keytool -exportcert -keystore -list -v -alias
Login di Android akan menggunakan akun yang login di perangkat pengguna.
Untuk menyiapkan versi Layanan Google Play, Anda dapat menggunakan parameter PLAY_SERVICES_VERSION (dengan nilai 11.8.0 secara default). Hal ini berguna untuk menghindari konflik dengan plugin lain yang menggunakan versi Google Play Service yang berbeda, karena versinya HARUS sama.
Google menandatangani ulang aplikasi Anda dengan sertifikat berbeda saat Anda memublikasikannya di Play Store. Setelah aplikasi Anda dipublikasikan, salin sidik jari SHA-1 dari "Sertifikat penandatanganan aplikasi", yang terdapat di bagian "Penandatanganan aplikasi" pada "Manajemen Rilis", di Konsol Google Play. Tempelkan sidik jari ini di ID klien Rilis OAuth di Google Credentials Manager.
Jika Anda ingin mendapatkan kembali idToken
atau serverAuthCode
dari Proses Masuk, Anda harus meneruskan ID klien untuk aplikasi web proyek Anda. Ini dapat ditemukan di laman kredensial API proyek Anda di Konsol Pengembang Google.
Plugin ini kompatibel dengan:
Begini cara kerjanya (buat cadangan proyek Anda terlebih dahulu!):
Menggunakan Cordova CLI dan npm:
$ cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
Menggunakan Cordova CLI untuk mengambil versi terbaru dari GitHub:
$ cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
PENTING:
Harap dicatat bahwa myreversedclientid
adalah tempat untuk clientId terbalik yang Anda temukan di file konfigurasi iOS Anda. Jangan mengapit nilai ini dengan tanda kutip. (Aplikasi khusus iOS)
Jika Anda membuat aplikasi hibrid (iOS dan Android) , atau aplikasi Android, Anda harus mengganti myreversedclientid
dengan nilai kebalikan dari ID Klien dalam kredensial Rilis yang dibuat pada langkah 3, di Konsol Pengembang Google, nilai ini akan menjadi: "com uniqueId
" , tanpa tanda kutip. Contoh: '123-abc123.apps.googleusercontent.com' menjadi 'com.googleusercontent.apps.123-abc123'.
myreversedclientid
adalah tempat untuk ID Klien Oauth yang khusus dibuat untuk aplikasi web di Konsol Pengembang Google Anda.
GooglePlus.js dibawa masuk secara otomatis. Tidak perlu mengubah atau menambahkan apa pun di html Anda.
Tambahkan ini ke config.xml Anda:
Untuk Versi NPM (stabil):
< plugin name = " cordova-plugin-googleplus " source = " npm " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
plugin >
Untuk versi terbaru dari Git (tidak disarankan):
< plugin spec = " https://github.com/EddyVerbruggen/cordova-plugin-googleplus.git " source = " git " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
< plugin >
Plugin ini menggunakan pengelola ketergantungan CocoaPods untuk memenuhi ketergantungan perpustakaan iOS Google SignIn SDK.
Oleh karena itu, pastikan Anda telah menginstal Cocoapods di lingkungan build iOS Anda - petunjuk pengaturan dapat ditemukan di sini. Pastikan juga repo Cocoapods lokal Anda mutakhir dengan menjalankan pod repo update
.
Jika membangun proyek Anda di Xcode, Anda perlu membuka YourProject.xcworkspace
(bukan YourProject.xcodeproj
) sehingga proyek aplikasi Cordova dan proyek Pods Anda akan dimuat ke dalam Xcode.
Anda dapat membuat daftar dependensi pod di proyek iOS Cordova Anda dengan menginstal dependensi kakaopods:
sudo gem install cocoapods-dependencies
cd platforms/ios/
pod dependencies
Periksa aplikasi demo untuk membantu Anda memulai dengan cepat, atau merugikan diri sendiri dan ikuti langkah-langkah berikut.
Perhatikan bahwa tidak satu pun dari metode ini yang harus dipanggil sebelum deviceready
diaktifkan.
Contoh:
document . addEventListener ( 'deviceready' , deviceReady , false ) ;
function deviceReady ( ) {
//I get called when everything's ready for the plugin to be called!
console . log ( 'Device is ready!' ) ;
window . plugins . googleplus . trySilentLogin ( ... ) ;
}
31/3/16 : Cara ini tidak perlu lagi dicek terlebih dahulu. Itu disimpan untuk ortoganalitas kode.
Fungsi login memandu pengguna melalui proses Google Auth. Semua parameter bersifat opsional, namun ada beberapa peringatan.
Untuk mendapatkan idToken
di Android, Anda harus memasukkan webClientId
Anda (kesalahan yang sering terjadi adalah memberikan ID Klien Android). Di iOS, idToken
disertakan dalam hasil masuk secara default.
Untuk mendapatkan serverAuthCode
, Anda harus memasukkan webClientId
Anda dan menyetel offline
ke true. Jika offline benar, tetapi tidak ada webClientId yang disediakan, serverAuthCode
TIDAK akan diminta.
Cakupan default yang diminta adalah profile
dan email
(selalu diminta). Untuk meminta cakupan lain, tambahkan cakupan tersebut sebagai daftar yang dipisahkan spasi ke parameter scopes
. Cakupan tersebut akan diminta persis seperti yang telah diserahkan. Lihat dokumentasi Google Scopes untuk informasi tentang cakupan valid yang dapat diminta. Misalnya, 'scope': 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/tasks'
.
Tentu saja, untuk menggunakan cakupan atau API tambahan apa pun, cakupan atau API tersebut harus diaktifkan di Konsol Pengembang proyek Anda.
window . plugins . googleplus . login (
{
'scopes' : '... ' , // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true // optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
Callback sukses (argumen kedua) mendapatkan objek JSON dengan konten berikut, dengan contoh data akun Google saya:
obj . email // '[email protected]'
obj . userId // user id
obj . displayName // 'Eddy Verbruggen'
obj . familyName // 'Verbruggen'
obj . givenName // 'Eddy'
obj . imageUrl // 'http://link-to-my-profilepic.google.com'
obj . idToken // idToken that can be exchanged to verify user identity.
obj . serverAuthCode // Auth code that can be exchanged for an access token and refresh token for offline access
obj . accessToken // OAuth2 access token
Informasi pengguna tambahan tersedia berdasarkan kasus penggunaan. Tambahkan cakupan yang diperlukan ke opsi cakupan lalu kembalikan info ke objek hasil yang dibuat di fungsi handleSignInResult
dan didSignInForUser
masing-masing di Android dan iOS.
Di Android, callback kesalahan (argumen ketiga) menerima kode status kesalahan jika autentikasi tidak berhasil. Deskripsi kode status tersebut dapat ditemukan di situs web pengembang Android Google di GoogleSignInStatusCodes.
Di iOS, panggilan balik kesalahan akan menyertakan NSError localizedDescription.
Anda dapat menghubungi trySilentLogin
untuk memeriksa apakah mereka sudah masuk ke aplikasi dan masuk secara diam-diam jika sudah masuk.
Jika berhasil maka akan mendapatkan objek yang sama dengan fungsi login
, namun jika gagal maka dialog autentikasi tidak akan ditampilkan kepada pengguna.
Memanggil trySilentLogin
dilakukan sama seperti login
, kecuali nama fungsinya.
window . plugins . googleplus . trySilentLogin (
{
'scopes' : '... ' , // optional - space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional - clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true , // Optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
Sangat disarankan agar trySilentLogin diimplementasikan dengan opsi yang sama seperti login, untuk menghindari potensi komplikasi.
Ini akan menghapus token OAuth2.
window . plugins . googleplus . logout (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
Tindakan ini akan menghapus token OAuth2, melupakan akun mana yang digunakan untuk masuk, dan memutuskan sambungan akun tersebut dari aplikasi. Hal ini mengharuskan pengguna untuk mengizinkan akses aplikasi lagi saat mereka masuk lagi. Perlu diketahui bahwa efek ini tidak selalu terjadi secara instan. Diperlukan waktu untuk memutuskan sambungan sepenuhnya.
window . plugins . googleplus . disconnect (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
idToken
Dokumentasi Google untuk Mengautentikasi dengan Server Backend
Seperti yang disebutkan dalam artikel di atas, idToken
dapat ditukar dengan informasi pengguna untuk mengonfirmasi identitas pengguna.
Catatan: Google tidak ingin data identitas pengguna dikirim langsung ke server. IdToken adalah metode pilihan mereka untuk mengirim data tersebut dengan aman dan selamat, karena harus diverifikasi melalui server mereka untuk membongkarnya.
Ini memiliki beberapa kegunaan. Di sisi klien, ini bisa menjadi cara untuk mengonfirmasi identitas pengguna dua kali, atau dapat digunakan untuk mendapatkan detail seperti domain host email. Sisi server adalah tempat idToken
benar-benar mencapai kemajuannya. Ini adalah cara mudah untuk mengonfirmasi identitas pengguna sebelum mengizinkan mereka mengakses sumber daya server tersebut atau sebelum menukar serverAuthCode
dengan token akses dan penyegaran (lihat bagian selanjutnya).
Jika sisi server Anda hanya memerlukan identitas, dan bukan akses akun tambahan, ini adalah cara yang aman dan sederhana untuk memberikan informasi tersebut.
serverAuthCode
Dokumentasi Google untuk Mengaktifkan Akses Sisi Server
Seperti yang disebutkan dalam artikel di atas, serverAuthCode
adalah item yang dapat ditukar dengan token akses dan penyegaran. Berbeda dengan idToken
, ini memungkinkan sisi server memiliki akses langsung ke akun Google pengguna.
Hanya dalam permintaan login awal, serverAuthCode
akan dikembalikan. Jika Anda ingin menerima token untuk kedua kalinya, Anda bisa dengan menggunakan logout terlebih dahulu.
Anda memiliki beberapa opsi dalam pertukaran ini: Anda dapat menggunakan Google REST Apis untuk mendapatkannya di aplikasi hybrid itu sendiri atau Anda dapat mengirim kode ke server backend Anda untuk ditukar di sana, menggunakan metode apa pun yang diperlukan (Google memberikan contoh untuk Java, Python, dan JS/HTTP).
Seperti yang dinyatakan sebelumnya, plugin ini adalah tentang otentikasi dan identitas pengguna, sehingga penggunaan akun pengguna apa pun di luar itu perlu diterapkan per kasus penggunaan, per aplikasi.
T: Saya tidak bisa mengaktifkan autentikasi di Android. Dan kenapa tidak ada ANDROID API KEY?
J: Di Android Anda perlu menjalankan langkah-langkah keytool
, lihat petunjuk instalasi untuk detailnya.
T: Setelah mengikuti langkah-langkah keytool
, saya masih tidak bisa mengaktifkan autentikasi di Android. Saya mengalami "10 kesalahan"!!!
A: Anda perlu mendapatkan sertifikat SHA 1 dari file apk Anda. Jalankan: keytool -list -printcert -jarfile
dan salin SHA 1 ke ID Klien Android Anda di Google Console.
T: Ya ampun $@#*! build Android gagal
J: Anda harus menginstal Android Support Repository dan Android Support Library di Android SDK manager. Pastikan Anda menggunakan versi yang cukup mutakhir.
T: Mengapa ini tidak berfungsi di Emulator Android saya???
J: Pastikan Anda menggunakan Perangkat Virtual yang berjalan dengan target Google API dan/atau CPU Google API !
T: Saya mendapatkan Error 10 , apa yang harus saya lakukan?
J: Hal ini kemungkinan disebabkan oleh Cordova yang tidak menggunakan keystore yang ingin Anda gunakan (misalnya karena Anda membuatnya sendiri). Silakan periksa https://cordova.apache.org/docs/en/latest/guide/platforms/android/#signing-an-app untuk membaca cara melakukan ini. Beberapa orang telah melaporkan bahwa Anda perlu menjalankan cordova clean
sebelum menjalankan build untuk mengatasi kesalahan 10.
T: Saya mendapatkan Error 16 , apa yang harus saya lakukan?
J: Ini selalu menjadi masalah karena tanda tangan (atau sidik jari) aplikasi Android Anda saat ditandatangani tidak ditambahkan ke daftar putih OAuth konsol Google (atau firebase). Harap periksa kembali apakah Anda telah melakukan semua yang diperlukan untuk ini. Lihat panduan mini di bawah ini.
Pertama, pastikan Anda membaca dan memahami sepenuhnya panduan Penandatanganan Aplikasi dari dokumentasi android!
Setelah/saat membaca itu, periksa kembali apakah Anda melakukan semua langkah 1-4 di bawah dengan benar:
Untuk menandatangani aplikasi Anda (saat pengembangan atau publikasi), Anda perlu membuat keystore dan kunci lokal dengan Android Studio atau melalui terminal. Google memiliki fitur yang disebut "Penandatanganan Aplikasi Google Play" di mana mereka akan menyimpan kunci di server mereka dan menandatangani aplikasi Anda untuk Anda, tetapi jika Anda menggunakan fitur ini atau tidak, Anda memerlukan keystore dan kunci lokal.
Keystore dan kunci lokal Anda akan menjadi kunci penandatanganan aplikasi resmi Anda.
Anda perlu memasukkan sidik jari kunci berikut ke dalam daftar putih (dalam format SHA1) di setelan Google OAuth:
debug.keystore
default AndroidKeystore dan kunci lokal Anda akan menjadi "Kunci Unggah" dan kunci lain untuk "Kunci Penandatanganan Aplikasi" resmi dibuat dan dikelola oleh Google.
Anda perlu memasukkan sidik jari kunci berikut ke dalam daftar putih (dalam format SHA1) di setelan Google Oauth:
debug.keystore
default AndroidDapatkan sidik jari kunci di atas (dalam format SHA1) agar dapat dimasukkan ke dalam daftar putih.
Untuk debug.keystore
default Android, lakukan:
keytool -exportcert -keystore /Users/myusername/.android/debug.keystore -list -v
Anda akan melihat sidik jari SHA1 untuk kunci debug di terminal. Salin itu.
Untuk keystore yang dibuat sendiri dengan kunci (baik untuk 2A atau 2B), lakukan:
keytool -exportcert -keystore /path/to/your/key/yourKeystoreFile.keystore -list -v
Anda akan melihat sidik jari SHA1 untuk kunci debug di terminal. Salin itu.
Hanya ketika Penandatanganan Aplikasi Google Play diaktifkan (untuk 2B). Anda dapat menemukan kunci yang akan digunakan Google untuk menandatangani bangunan Anda di Konsol Google Play.
Persyaratan: Anda harus menyelesaikan informasi dasar pada aplikasi Android Anda dan kemudian Anda perlu mengunggah APK yang ditandatangani untuk pengujian internal. Setelah ini diunggah, Anda akan dapat mengakses menu berikut:
Buka Manajemen Rilis > Penandatanganan aplikasi. Di sana Anda akan melihat
Yang "Unggah" (dan seharusnya) sama dengan kunci B. di atas. Dan "Sertifikat penandatanganan aplikasi" adalah kunci yang akan digunakan Google. Salin yang ini.
Sekali lagi kami memiliki 2 opsi untuk memasukkannya ke daftar putih. Project yang hanya menggunakan Google Cloud Platform atau project yang menggunakan Firebase .
(Jika Anda juga menggunakan Firebase, Anda dapat melewati langkah ini)