Uçtan uca oturum açma akışını gerçekleştirmek için Firebase SDK'yı kullanarak web tabanlı genel OAuth Girişini uygulamanıza entegre ederek, Yahoo gibi OAuth sağlayıcılarını kullanarak kullanıcılarınızın Firebase ile kimlik doğrulaması yapmasına olanak tanıyabilirsiniz. Bu akış, telefon tabanlı Firebase SDK'larının kullanımını gerektirdiğinden yalnızca Android ve Apple platformlarında desteklenir.
Sen başlamadan önce
Firebase Authentication'ı kullanabilmeniz için şunları yapmanız gerekir:
Unity projenizi kaydedin ve Firebase'i kullanacak şekilde yapılandırın.
Unity projeniz zaten Firebase kullanıyorsa Firebase için zaten kayıtlı ve yapılandırılmıştır.
Unity projeniz yoksa örnek bir uygulama indirebilirsiniz.
Firebase Unity SDK'sını (özellikle
FirebaseAuth.unitypackage
) Unity projenize ekleyin.
Firebase'i Unity projenize eklemenin hem Firebase konsolundaki hem de açık Unity projenizdeki görevleri içerdiğini unutmayın (örneğin, Firebase yapılandırma dosyalarını konsoldan indirir ve ardından bunları Unity projenize taşırsınız).
Firebase.Auth.FirebaseAuth
sınıfına erişme
FirebaseAuth
sınıfı, tüm API çağrılarının ağ geçididir. FirebaseAuth.DefaultInstance aracılığıyla erişilebilir.Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Oturum açma akışını Firebase SDK ile yönetin
Firebase SDK ile oturum açma akışını yönetmek için şu adımları izleyin:
Yahoo'ya uygun sağlayıcı kimliğiyle yapılandırılmış bir
FederatedOAuthProviderData
örneği oluşturun.Firebase.Auth.FederatedOAuthProviderData providerData = new Firebase.Auth.FederatedOAuthProviderData(); providerData.ProviderId = Firebase.Auth.YahooAuthProvider.ProviderId;
İsteğe bağlı : OAuth isteğiyle birlikte göndermek istediğiniz ek özel OAuth parametrelerini belirtin.
providerData.CustomParameters = new Dictionary<string,string>; // Prompt user to re-authenticate to Yahoo. providerData.CustomParameters.Add("prompt", "login"); // Localize to French. providerData.CustomParameters.Add("language", "fr");
Yahoo'nun desteklediği parametreler için Yahoo OAuth belgelerine bakın. Firebase için gerekli parametreleri
custom_parameters()
ile iletemeyeceğinizi unutmayın. Bu parametreler client_id , yönlendirme_uri , yanıt_tipi , kapsam ve durumdur .İsteğe bağlı : Kimlik doğrulama sağlayıcısından istemek istediğiniz
profile
veemail
ötesinde ek OAuth 2.0 kapsamlarını belirtin. Uygulamanız, Yahoo API'lerinden gelen özel kullanıcı verilerine erişim gerektiriyorsa, Yahoo geliştirici konsolundaki API İzinleri altında Yahoo API'lerine yönelik izinler istemeniz gerekir. İstenen OAuth kapsamları, uygulamanın API izinlerinde önceden yapılandırılmış olanlarla tam olarak eşleşmelidir. Örneğin, kullanıcı kişilerine okuma/yazma erişimi istenirse ve uygulamanın API izinlerinde önceden yapılandırılmışsa, salt okunur OAuth kapsamısdct-r
yerinesdct-w
iletilmelidir. Aksi halde akış başarısız olacak ve son kullanıcıya bir hata gösterilecektir.providerData.Scopes = new List<string>(); // Request access to Yahoo Mail API. providerData.Scopes.Add("mail-r"); // This must be preconfigured in the app's API permissions. providerData.Scopes.Add("sdct-w");
Daha fazla bilgi edinmek için Yahoo kapsamları belgelerine bakın.
Sağlayıcı verileriniz yapılandırıldıktan sonra bunu bir FederatedOAuthProvider oluşturmak için kullanın.
// Construct a FederatedOAuthProvider for use in Auth methods. Firebase.Auth.FederatedOAuthProvider provider = new Firebase.Auth.FederatedOAuthProvider(); provider.SetProviderData(providerData);
Kimlik doğrulama sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulaması yapın. Diğer FirebaseAuth işlemlerinden farklı olarak, bunun, kullanıcının kimlik bilgilerini girebileceği bir web görünümü açarak kullanıcı arayüzünüzün kontrolünü ele alacağını unutmayın.
Oturum açma akışını başlatmak için
SignInAndRetrieveDataWithCredentialAsync
öğesini çağırın:
<<../_includes/_sign_in_with_provider_unity.md>>>
Yukarıdaki örnekler oturum açma akışlarına odaklansa da,
LinkWithProviderAsync
kullanarak bir Yahoo sağlayıcısını mevcut bir kullanıcıya bağlama olanağınız da vardır. Örneğin, birden fazla sağlayıcıyı aynı kullanıcıya bağlayarak onların ikisinden biriyle oturum açmasına olanak tanıyabilirsiniz.user.LinkWithProviderAsync(provider).ContinueOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("LinkWithProviderAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("LinkWithProviderAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult authResult = task.Result; Firebase.Auth.FirebaseUser user = authResult.User; Debug.LogFormat("User linked successfully: {0} ({1})", user.DisplayName, user.UserId); });
Aynı model, yakın zamanda oturum açmayı gerektiren hassas işlemler için yeni kimlik bilgileri almak üzere kullanılabilen
ReauthenticateWithProviderAsync
ile de kullanılabilir.user.ReauthenticateWithProviderAsync(provider).ContinueOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("ReauthenticateWithProviderAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError( "ReauthenticateWithProviderAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult authResult = task.Result; Firebase.Auth.FirebaseUser user = authResult.User; Debug.LogFormat("User reauthenticated successfully: {0} ({1})", user.DisplayName, user.UserId); });
Sonraki adımlar
Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı oluşturulur ve kullanıcının oturum açtığı kimlik bilgileriyle (yani kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) ilişkilendirilir. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığına bakılmaksızın projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.
Uygulamalarınızda kullanıcının temel profil bilgilerini
Firebase.Auth.FirebaseUser
nesnesinden alabilirsiniz:Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // The user's Id, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, if you // have one; use User.TokenAsync() instead. string uid = user.UserId; }
Firebase Gerçek Zamanlı Veritabanı ve Bulut Depolama Güvenliği Kurallarınızda , oturum açan kullanıcının benzersiz kullanıcı kimliğini
auth
değişkeninden alabilir ve bunu, kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.
Bir kullanıcının oturumunu kapatmak için SignOut()
öğesini çağırın:
auth.SignOut();