Catch up on everthing we announced at this year's Firebase Summit. Learn more

Yahoo ve Unity Kullanarak Kimlik Doğrulama

Uçtan uca oturum açma akışını gerçekleştirmek için Firebase SDK'yı kullanarak web tabanlı genel OAuth Login'i uygulamanıza entegre ederek, kullanıcılarınızın Yahoo gibi OAuth sağlayıcılarını kullanarak Firebase ile kimlik doğrulamasını sağlayabilirsiniz. Bu akış, telefon tabanlı Firebase SDK'larının kullanılmasını gerektirdiğinden yalnızca Android ve Apple platformlarında desteklenir.

Sen başlamadan önce

Eğer kullanmadan önce Firebase Authentication , yapmanız gerekenler:

  • 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.

    • Eğer bir Birlik projesini yoksa, bir indirebilirsiniz örnek uygulamasını .

  • Ekle Firebase Birlik SDK'yı (özellikle FirebaseAuth.unitypackage sizin Birlik projesine).

Senin Birlik projesine Firebase ekleyerek hem işlemleri kapsar Not olduğunu Firebase konsolunda ve açık Birlik projesinde (örneğin, daha sonra, konsoldan Firebase yapılandırma dosyalarını indirmek için Birlik projesinin içine taşıyın).

Erişim Firebase.Auth.FirebaseAuth sınıfını

FirebaseAuth sınıfı tüm API çağrıları için kapıdır. Bu ulaşılabiliyor FirebaseAuth.DefaultInstance .
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Firebase SDK ile oturum açma akışını yönetin

Firebase SDK ile oturum açma akışını yönetmek için şu adımları izleyin:

  1. Bir örneğini Construct FederatedOAuthProviderData Yahoo sağlayıcı numarası uygun yapılandırılmış.

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.YahooAuthProvider.ProviderId;
    
  2. İsteğe bağlı: OAuth isteği ile 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");
    

    Parametreler Yahoo desteklerin için bkz Yahoo OAuth belgelerine . Birlikte Firebase-gerekli parametreleri geçemediği Not custom_parameters() . Bu parametreler client_id, redirect_uri, response_type, kapsam ve devlet vardır.

  3. İsteğe bağlı: Ek OAuth ötesinde 2.0 kapsamlarını belirtme profile ve email kimlik doğrulama sağlayıcısından talep istediğimi. Başvurunuz Yahoo API'larından özel kullanıcı verilerine erişim gerektiriyorsa, Yahoo geliştirici konsolunda API izinleriVarsayılanı Yahoo API'leri isteği izinleri gerekir. İstenen OAuth kapsamları, uygulamanın API izinlerinde önceden yapılandırılmış olanlarla tam olarak eşleşmelidir. Okuma, Örneğin / yazma erişimi Kullanıcı kişilerin istenir ve uygulamanın API izinleri önceden sdct-w yerine salt okunur OAuth kapsamı içinde geçirilmiş değil sdct-r . Aksi takdirde akış başarısız olur ve son kullanıcıya bir hata gösterilir.

    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 için bakınız Yahoo'nun kapsamları belgelerinde .

  4. 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);
    
  5. Yetkilendirme 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.

    Akışındaki işaretini başlatmak için çağrı SignInWithProviderAsync :

<<../_includes/_sign_in_with_provider_unity.md>>>

  1. Yukarıdaki örnekler odaklanırken oturum açma akışları, ayrıca kullanarak mevcut kullanıcıya bir Yahoo sağlayıcı bağlama yetkisi vardır LinkWithProviderAsync . Örneğin, birden çok sağlayıcıyı aynı kullanıcıya bağlayarak her ikisiyle de oturum açmalarını sağlayabilirsiniz.

    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.SignInResult signInResult = task.Result;
        Firebase.Auth.FirebaseUser user = signInResult.User;
        Debug.LogFormat("User linked successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    
  2. Aynı desen ile kullanılabilir ReauthenticateWithProviderAsync son girişi gerektiren hassas operasyonlar için taze kimlik bilgilerini almak için 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.SignInResult signInResult = task.Result;
        Firebase.Auth.FirebaseUser user = signInResult.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 oturum açtığı kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcısı bilgileri gibi kimlik bilgilerine bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığından bağımsız olarak projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.

  • Senin uygulamalarda, gelen kullanıcının temel profil bilgileri alabilirsiniz Firebase.Auth.FirebaseUser nesnesi:

    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;
    }
    
  • Senin Firebase Gerçek Zamanlı Veritabanı ve Bulut Depolama yılında Güvenlik Kuralları , alabilirsiniz, kullanıcının benzersiz bir kullanıcı kimliği imzalı auth değişkeni ve hangi verilerin kullanıcı teneke erişimi kontrol etmek için kullanabilirsiniz.

Kullanıcıların birden çok kimlik doğrulama sağlayıcıları kullanarak uygulamada oturum izin verebilir mevcut bir kullanıcı hesabına auth sağlayıcı kimlik bilgilerini birbirine bağlayan.

Bir kullanıcı Oturumu kapatmak için çağrı SignOut() :

auth.SignOut();