Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Tautkan Beberapa Penyedia Auth ke Akun di Unity

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat mengizinkan pengguna masuk ke aplikasi Anda menggunakan beberapa penyedia autentikasi dengan menautkan kredensial penyedia autentikasi ke akun pengguna yang ada. Pengguna dapat diidentifikasi dengan ID pengguna Firebase yang sama terlepas dari penyedia autentikasi yang mereka gunakan untuk masuk. Misalnya, pengguna yang masuk dengan sandi dapat menautkan akun Google dan masuk dengan salah satu metode di masa mendatang. Atau, pengguna anonim dapat menautkan akun Facebook dan kemudian, masuk dengan Facebook untuk terus menggunakan aplikasi Anda.

Sebelum kamu memulai

Tambahkan dukungan untuk dua atau lebih penyedia autentikasi (mungkin termasuk autentikasi anonim) ke aplikasi Anda.

Kelas FirebaseAuth adalah gerbang untuk semua panggilan API. Itu dapat diakses melalui FirebaseAuth.DefaultInstance .
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Untuk menautkan kredensial penyedia autentikasi ke akun pengguna yang ada:

  1. Masuk pengguna menggunakan penyedia atau metode otentikasi apa pun.
  2. Selesaikan alur masuk untuk penyedia autentikasi baru hingga, tetapi tidak termasuk, memanggil salah satu metode Firebase.Auth.FirebaseAuth.SignInWithCredentialAsync . Misalnya, dapatkan token ID Google pengguna, token akses Facebook, atau email dan kata sandi.
  3. Dapatkan Firebase.Auth.Credential untuk penyedia otentikasi baru:

    Masuk dengan Google
    Firebase.Auth.Credential credential =
        Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken);
    
    Facebook Login
    Firebase.Auth.Credential credential =
        Firebase.Auth.FacebookAuthProvider.GetCredential(accessToken);
    
    Masuk email-sandi
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    
  4. Teruskan objek Firebase.Auth.Credential ke metode LinkWithCredentialAsync pengguna yang masuk:

    auth.CurrentUser.LinkWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("LinkWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("LinkWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("Credentials successfully linked to Firebase user: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

    Panggilan ke LinkWithCredentialAsync akan gagal jika kredensial sudah ditautkan ke akun pengguna lain. Dalam situasi ini, Anda harus menangani penggabungan akun dan data terkait yang sesuai untuk aplikasi Anda:

    // Gather data for the currently signed in User.
    string currentUserId = auth.CurrentUser.UserId;
    string currentEmail = auth.CurrentUser.Email;
    string currentDisplayName = auth.CurrentUser.DisplayName;
    System.Uri currentPhotoUrl = auth.CurrentUser.PhotoUrl;
    
    // Sign in with the new credentials.
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    
      // TODO: Merge app specific details using the newUser and values from the
      // previous user, saved above.
    });
    

Jika panggilan ke LinkWithCredentialAsync berhasil, pengguna sekarang dapat masuk menggunakan penyedia autentikasi tertaut dan mengakses data Firebase yang sama.

Anda dapat memutuskan tautan penyedia autentikasi dari akun, sehingga pengguna tidak dapat lagi masuk dengan penyedia tersebut.

Untuk memutuskan tautan penyedia auth dari akun pengguna, teruskan ID penyedia ke metode UnlinkAsync . Anda bisa mendapatkan ID penyedia dari penyedia auth yang ditautkan ke pengguna dengan memanggil ProviderData .

// Unlink the sign-in provider from the currently active user.
// providerIdString is a string identifying a provider,
// retrieved via FirebaseAuth.FetchProvidersForEmail().
auth.CurrentUser.UnlinkAsync(providerIdString).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("UnlinkAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("UnlinkAsync encountered an error: " + task.Exception);
    return;
  }

  // The user has been unlinked from the provider.
  Firebase.Auth.FirebaseUser newUser = task.Result;
  Debug.LogFormat("Credentials successfully unlinked from user: {0} ({1})",
      newUser.DisplayName, newUser.UserId);
});