Microsoft ve Unity Kullanarak Kimlik Doğrula

Kullanıcılarınızın aşağıdaki gibi OAuth sağlayıcıları kullanarak Firebase ile kimlik doğrulaması yapmasına izin verebilirsiniz: Web tabanlı genel OAuth Girişi entegrasyonuyla Microsoft Azure Active Directory Uçtan uca oturum açma akışını gerçekleştirmek için Firebase SDK'sını kullanarak uygulamanıza ekleyin. Bu akış, telefon tabanlı Firebase SDK'larının kullanılmasını gerektirdiğinden, ve Apple platformlarında desteklenir.

Başlamadan önce

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 kaydedilip yapılandırıldı.

    • Unity projeniz yoksa şunu indirebilirsiniz: örnek uygulama.

  • Firebase Unity SDK'sını (özellikle FirebaseAuth.unitypackage) şuraya ekleyin: derleyip toparlarsınız.

Firebase'i Unity projenize eklemenin hem Firebase konsolunda ve açık Unity projenizde (örneğin, Firebase yapılandırma dosyalarını konsoldan indirip bu dosyalara bunları Unity projenize ekleyin).

Firebase.Auth.FirebaseAuth sınıfına erişme

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;

Oturum açma akışını Firebase SDK'sı ile yönetme

Oturum açma akışını Firebase SDK'sı ile yönetmek için aşağıdaki adımları uygulayın:

  1. Şununla yapılandırılmış bir FederatedOAuthProviderData örneği oluşturun: sağlayıcı kimliğini girin.

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.MicrosoftAuthProvider.ProviderId;
    
  2. İsteğe bağlı: Eklemek istediğiniz ek özel OAuth parametrelerini belirtin OAuth isteğiyle gönderir.

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Prompt user to re-authenticate to Microsoft.
    providerData.CustomParameters.Add("prompt", "login");
    
    // Target specific email with login hint.
    providerData.CustomParameters.Add("login_hint",
        "user@firstadd.onmicrosoft.com");
    

    Microsoft'un desteklediği parametreler için Microsoft OAuth dokümanları. Firebase'in gerekli parametrelerini setCustomParameters() Bu parametreler client_id, response_type, redirect_uri, state, scope ve response_mode parametresini kullanabilirsiniz.

    Yalnızca belirli bir Azure AD kiracısındaki kullanıcıların oturum açmasına izin vermek için Azure AD kiracısının kolay alan adını girerek ya da kiracının GUID tanımlayıcısı kullanılabilir. Bu işlem, "kiracı" alanına girmelisiniz.

    // Optional "tenant" parameter in case you are using an Azure AD tenant.
    // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'
    // or "common" for tenant-independent tokens.
    // The default value is "common".
    providerData.CustomParameters.Add("tenant", "TENANT_ID");
    
  3. İsteğe bağlı: Temel profilin ötesinde, ek OAuth 2.0 kapsamlarını belirtin. kimlik doğrulama sağlayıcısından istekte bulunabilirsiniz.

    providerData.Scopes = new List<string>();
    providerData.Scopes.Add("mail.read");
    providerData.Scopes.Add("calendars.read");
    

    Daha fazla bilgi edinmek için Microsoft izinleri ve izin dokümanları.

  4. Sağlayıcı verileriniz yapılandırıldıktan sonra, verilerinizi kullanarak FederatedOAuthProvider.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    Firebase.Auth.FederatedOAuthProvider provider = new Firebase.Auth.FederatedOAuthProvider();
    provider.SetProviderData(providerData);
    
  5. Auth sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulayın. Unutmayın, diğer FirebaseAuth işlemleri için, bu işlem, Kullanıcının kimlik bilgilerini girebileceği bir web görünümü sunar.

    Oturum açma akışını başlatmak için SignInAndRetrieveDataWithCredentialAsync numaralı telefonu arayın:

    auth.SignInWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("SignInWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("SignInWithProviderAsync encountered an error: " +
              task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User signed in successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

    OAuth erişim jetonunu kullanarak Microsoft Graph API.

    Firebase Auth tarafından desteklenen diğer sağlayıcılardan farklı olarak, Microsoft fotoğraf URL'si sağlar ve bunun yerine, profil fotoğrafı için ikili verilerde talep edilen e-posta adresi Microsoft Graph API.

  6. Yukarıdaki örneklerde oturum açma akışlarına odaklanılsa da Microsoft Azure Active Directory sağlayıcısını mevcut bir kuruluşa bağlama kullanıcısı LinkWithProviderAsync kullanıyor. Örneğin, birden çok sağlayıcıyı aynı kullanıcıya göstererek bu iki sağlayıcıdan ikisiyle de oturum açabilmesini sağlar.

    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);
    });
    
  7. Aynı desen, ReauthenticateWithProviderAsync için de kullanılabilir. hassas işlemler için yeni kimlik bilgileri almak amacıyla kullanılabilir yeni giriş yapılması gerekir.

    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

Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve bilgileri (kullanıcı adı ve şifre, telefon numarası) Numara veya kimlik doğrulama sağlayıcı bilgileri (oturum açan kullanıcı). Bu yeni Firebase projenizin bir parçası olarak saklanır ve aşağıdaki verileri tanımlamak için kullanılabilir: nasıl oturum açarsa açsın, projenizdeki tüm uygulamalarda kullanılır.

  • Uygulamalarınızda, kullanıcıların temel profil bilgilerini şuradan alabilirsiniz: Firebase.Auth.FirebaseUser nesne:

    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 Realtime Database ve Cloud Storage içinde Güvenlik Kuralları'nı kullanarak şunları yapabilirsiniz: auth değişkeninden, oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilirsiniz. ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanılır.

Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz yetkilendirme sağlayıcısının kimlik bilgilerini hesaba katılmaz.

Bir kullanıcının oturumunu kapatmak için numaralı telefonu arayın SignOut():

auth.SignOut();