Lompat ke konten

Migrasi Otorisasi Google ke @capgo/social-login

Panduan ini menyediakan langkah-langkah komprehensif untuk beralih dari @codetrix-studio/capacitor-google-auth ke @capgo/capacitor-social-login, memastikan transisi yang lancar dan pengalaman autentikasi yang ditingkatkan. Plugin baru ini menyatukan penyedia autentikasi sosial yang berbeda di bawah satu API yang konsisten.

  1. Hapus paket lama:

    Jendela Terminal
    npm uninstall @codetrix-studio/capacitor-google-auth
  2. Pasang paket baru:

    Jendela Terminal
    npm install @capgo/capacitor-social-login
    npx cap sync

Perubahan Penting dalam Pengaturan Autentikasi Google

Judul Bagian “Perubahan Penting dalam Pengaturan Autentikasi Google”

Perubahan Kritis: Plugin yang diperbarui memerlukan penggunaan ID Klien Web di semua platform.

Anda perlu:

  1. Buat ID Klien Web di Google Cloud Console jika Anda tidak memiliki salah satu (Cara mendapatkan kredensial)
  2. Gunakan ID Klien Web ini di webClientId bidang untuk semua platform
  3. Untuk Android, Anda masih perlu membuat ID Klien Android dengan SHA1, tetapi ini hanya untuk keperluan verifikasi - token tidak akan digunakan (Petunjuk pengaturan Android)
import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';
import { SocialLogin } from '@capgo/capacitor-social-login';

Konfigurasi setup berubah dari GoogleAuth.initialize() panggilan sederhana SocialLogin.initialize() menjadi struktur yang lebih kompleks

GoogleAuth.initialize({
clientId: 'CLIENT_ID.apps.googleusercontent.com',
scopes: ['profile', 'email'],
grantOfflineAccess: true,
});
await SocialLogin.initialize({
google: {
webClientId: 'WEB_CLIENT_ID.apps.googleusercontent.com', // Use Web Client ID for all platforms
iOSClientId: 'IOS_CLIENT_ID', // for iOS
mode: 'offline' // replaces grantOfflineAccess
}
});

Salin ke clipboard

Masuk

Bagian berjudul “Masuk” GoogleAuth.signIn() Metode login berubah dari SocialLogin.login() dengan spesifikasi penyedia eksplisit:

const user = await GoogleAuth.signIn();
const res = await SocialLogin.login({
provider: 'google',
options: {
scopes: ['email', 'profile'],
forceRefreshToken: true // if you need refresh token
}
});
  1. Perbarui MainActivity.java (Petunjuk Penuh Pengaturan Android):
import ee.forgr.capacitor.social.login.GoogleProvider;
import ee.forgr.capacitor.social.login.SocialLoginPlugin;
import ee.forgr.capacitor.social.login.ModifiedMainActivityForSocialLoginPlugin;
import com.getcapacitor.PluginHandle;
import com.getcapacitor.Plugin;
import android.content.Intent;
import android.util.Log;
public class MainActivity extends BridgeActivity {
public class MainActivity extends BridgeActivity implements ModifiedMainActivityForSocialLoginPlugin {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode >= GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MIN && requestCode < GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MAX) {
PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
if (pluginHandle == null) {
Log.i("Google Activity Result", "SocialLogin login handle is null");
return;
}
Plugin plugin = pluginHandle.getInstance();
if (!(plugin instanceof SocialLoginPlugin)) {
Log.i("Google Activity Result", "SocialLogin plugin instance is not SocialLoginPlugin");
return;
}
((SocialLoginPlugin) plugin).handleGoogleLoginIntent(requestCode, data);
}
}
public void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}
}
  1. Tidak perlu perubahan besar dalam AppDelegate.swift (Panduan pengaturan iOS)

  2. Perbarui pengaturan Anda di capacitor.config.json, kami tidak menggunakan itu dalam plugin baru:

{
"plugins": {
"GoogleAuth": {
"scopes": ["profile", "email"],
"serverClientId": "xxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"forceCodeForRefreshToken": true
}
}
  1. Hapus tag meta Google Sign-In dari halaman Anda: index.html Jika Anda menggunakan mereka:
<meta name="google-signin-client_id" content="{your client id here}" />
<meta name="google-signin-scope" content="profile email" />

Sekarang respons autentikasi menyediakan objek terstruktur yang berisi informasi penyedia, token akses, token ID, dan data profil pengguna:

interface GoogleLoginResponse {
provider: 'google';
result: {
accessToken: {
token: string;
expires: string;
// ... other token fields
} | null;
idToken: string | null;
profile: {
email: string | null;
familyName: string | null;
givenName: string | null;
id: string | null;
name: string | null;
imageUrl: string | null;
};
};
}

Struktur respons mencakup:

  • provider: Mengidentifikasi penyedia autentikasi ('google')
  • result.accessToken: Detail token akses dengan batas waktu
  • result.idToken: Token ID untuk autentikasi
  • result.profile: Informasi profil pengguna termasuk email, nama, dan URL URL gambar

Paket baru ini mendukung penyediaan autentikasi sosial yang lebih dari Google:

Pendekatan ini menyediakan:

  • Konsistensi API di semua penyedia
  • Pengembangan TypeScript yang lebih baik
  • Pengelolaan kesalahan yang lebih baik
  • Pemeliharaan aktif dan dukungan komunitas

Periksa dokumentasi utama untuk instruksi pengaturan rinci untuk penyedia tambahan ini.

Lanjutkan dari Migrasi Autentikasi Google ke @capgo/social-login

Bagian berjudul “Teruskan dari Migrasi Oauth Google ke @capgo/social-login”

Jika Anda menggunakan Migrasi Oauth Google ke @capgo/social-login untuk merencanakan autentikasi dan alur akun, hubungkannya dengan Menggunakan @capgo/capacitor-social-login untuk kemampuan asli dalam Menggunakan @capgo/capacitor-social-login, @capgo/capacitor-social-login untuk detail implementasi dalam @capgo/capacitor-social-login, @capgo/capacitor-passkey untuk detail implementasi dalam @capgo/capacitor-passkey, @capgo/capacitor-native-biometric untuk detail implementasi dalam @capgo/capacitor-native-biometric, dan Autentikasi dua faktor untuk detail implementasi di Autentikasi dua faktor.