Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak Kullanıcılar, kimlik doğrulama sağlayıcısından ödeme alınır. Örneğin, Yeşil Ofis'in web sitesinde bir Google hesabını bağlayabilir ve duymuş olabilirsiniz. Alternatif olarak, anonim bir kullanıcı bir Facebook hesabını bağlayıp daha sonra uygulamanızı kullanmaya devam etmek için Facebook'ta oturum açın.
Başlamadan önce
İki veya daha fazla kimlik doğrulama sağlayıcı için destek ekleyin ( anonim kimlik doğrulama) ekleyebilirsiniz.
FirebaseAuth
sınıfı, tüm API çağrılarına yönelik ağ geçididir.
FirebaseAuth.DefaultInstance üzerinden erişilebilir.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Yetkilendirme sağlayıcı kimlik bilgilerini bir kullanıcı hesabına bağla
Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlamak için:
- Herhangi bir kimlik doğrulama sağlayıcısı veya yöntemi kullanarak kullanıcının oturumunu açın.
- Yeni kimlik doğrulama sağlayıcı için oturum açma akışını en fazla tamamlayın ancak
Örneğin,
Firebase.Auth.FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync
yöntemlerinden birini çağırın. Örneğin, Kullanıcının Google kimliği jetonu, Facebook erişim jetonu veya e-postası ve şifresi. Yeni kimlik doğrulama sağlayıcı için bir
Google ile Oturum AçmaFirebase.Auth.Credential
alın: Facebook'a GirişFirebase.Auth.Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken);
E-posta şifresiyle oturum açmaFirebase.Auth.Credential credential = Firebase.Auth.FacebookAuthProvider.GetCredential(accessToken);
Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
Firebase.Auth.Credential
nesnesini oturum açmış kullanıcının cihazına iletin.LinkWithCredentialAsync
yöntemi: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.AuthResult result = task.Result; Debug.LogFormat("Credentials successfully linked to Firebase user: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Kimlik bilgileri aşağıdaki gibiyse
LinkWithCredentialAsync
çağrısı başarısız olur başka bir kullanıcı hesabına bağlı. Böyle bir durumda, hesapları ve ilişkili verileri uygulamanıza uygun şekilde birleştirme:// 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.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); // TODO: Merge app specific details using the newUser and values from the // previous user, saved above. });
LinkWithCredentialAsync
çağrısı başarılı olursa kullanıcı artık
ve aynı Firebase verilerine erişmelerini isteyebilir.
Yetkilendirme sağlayıcı ile kullanıcı hesabı arasındaki bağlantıyı kaldırma
Bir kimlik doğrulama sağlayıcı ile hesap arasındaki bağlantıyı kaldırabilirsiniz. Böylece, kullanıcı daha uzun süre oturum açmanızı sağlar.
Bir kimlik doğrulama sağlayıcının kullanıcı hesabıyla olan bağlantısını kaldırmak için sağlayıcı kimliğini
UnlinkAsync
yöntemini çağırın. Yetkilendirmenin sağlayıcı kimliklerini alabilirsiniz.
sesli arama yoluyla bir kullanıcıya bağlanan sağlayıcılar
ProviderData
değerleridir.
// 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.AuthResult result = task.Result; Debug.LogFormat("Credentials successfully unlinked from user: {0} ({1})", result.User.DisplayName, result.User.UserId); });