Apple Platformlarında Yahoo Kullanarak Kimlik Doğrulama

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: Firebase SDK'sını kullanarak uygulamanıza genel OAuth Giriş'i entegre ederek Yahoo! uçtan uca oturum açma akışını nasıl uygulayacağınızı belirleyin.

Başlamadan önce

Yahoo hesaplarını kullanarak kullanıcıların oturumunu açmak için öncelikle Yahoo'yu oturum açma bilgileri olarak etkinleştirmeniz gerekir Firebase projeniz için sağlayıcı:

  1. Firebase'i Apple projenize ekleyin.
  2. Firebase konsolunda Auth bölümünü açın.
  3. Oturum açma yöntemi sekmesinde Yahoo sağlayıcısını etkinleştirin.
  4. Söz konusu sağlayıcının geliştirici konsolundan İstemci Kimliği ve İstemci Gizli Anahtarı'nı sağlayıcı yapılandırması:
    1. Yahoo OAuth istemcisi kaydetmek için: Yahoo OAuth geliştiricisindeki ile ilgili dokümanlar Yahoo'ya bir web uygulaması kaydetme.

      İki COPPA Connect API iznini seçtiğinizden emin olun: profile ve email.

    2. Bu sağlayıcılara uygulama kaydederken şunu kaydettiğinizden emin olun: Projenizin *.firebaseapp.com alan adını uygulamasını indirin.
  5. Kaydet'i tıklayın.

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

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

  1. Xcode projenize özel URL şemaları ekleyin:

    1. Proje yapılandırmanızı açın: sol ağaç görünümünde yer alır. HEDEFLER bölümünden uygulamanızı seçin, ardından Bilgi sekmesini seçin ve URL Türleri bölümünü genişletin.
    2. + düğmesini tıklayın ve Kodlanmış Uygulama Kimliğinizi URL olarak ekleyin şema. Kodlanmış Uygulama Kimliğinizi şurada bulabilirsiniz: Genel Firebase konsolunun Ayarlar sayfasındaki Ayarlar bölümünde uygulamasını indirin. Diğer alanları boş bırakın.

      Tamamlandığında yapılandırmanız şuna benzer bir görünümde olacaktır: aşağıdaki (ancak uygulamaya özel değerlerinizle):

      Xcode'un özel URL şeması kurulum arayüzünün ekran görüntüsü

  2. Sağlayıcı kimliğini kullanarak OAuthProvider örneği oluşturma yahoo.com adresinde kayıtlıdır.

    Swift

    var provider = OAuthProvider(providerID: "yahoo.com")
        

    Objective-C

    FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"yahoo.com"];
        
  3. İsteğe bağlı: Eklemek istediğiniz ek özel OAuth parametrelerini belirtin OAuth isteğiyle gönderir.

    Swift

    provider.customParameters = [
    "prompt": "login",
    "language": "fr"
    ]
        

    Objective-C

    [provider setCustomParameters:@{@"prompt": @"login", @"language": @"fr"}];
        

    Yahoo'nun desteklediği parametreler için Yahoo OAuth dokümanları. Firebase'in gerekli parametrelerini setCustomParameters Bu parametreler client_id, redirect_uri, response_type, scope ve state öğesini seçebilirsiniz.

  4. İsteğe bağlı: profile dışında ek OAuth 2.0 kapsamları belirtin ve Kimlik doğrulama sağlayıcıdan istekte bulunmak istediğiniz email. Eğer uygulamasının Yahoo API'lerinden gizli kullanıcı verilerine erişmesi gerektiğinde, API İzinleri altında Yahoo API'lerine Yahoo geliştirici konsolu. İstenen OAuth kapsamları uygulamanın API izinlerinde önceden yapılandırılmış olanları içerir. Örneğin, okuma/yazma kullanıcının kişilerine erişim istendi ve uygulamanın API'sinde önceden yapılandırıldı izinleri için salt okunur OAuth kapsamı yerine sdct-w iletilmelidir sdct-r. Aksi takdirde, akış başarısız olur ve yardımcı olur.

    Swift

    // Request access to Yahoo Mail API.
    // Request read/write access to user contacts.
    // This must be preconfigured in the app's API permissions.
    provider.scopes = ["mail-r", "sdct-w"]
        

    Objective-C

    // Request access to Yahoo Mail API.
    // Request read/write access to user contacts.
    // This must be preconfigured in the app's API permissions.
    [provider setScopes:@[@"mail-r", @"sdct-w"]];
        

    Daha fazla bilgi edinmek için Yahoo kapsamları dokümanları.

  5. İsteğe bağlı: Uygulamanızın Şu durumlarda SFSafariViewController veya UIWebView: önleyici'yi kullanabilirsiniz. Buna göre, AuthUIDelegate protokolüne ve bunu credentialWithUIDelegate.

  6. OAuth sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulayın.

    Swift

    provider.getCredentialWith(nil) { credential, error in
    if error != nil {
    // Handle error.
    }
    if credential != nil {
    Auth().signIn(with: credential) { authResult, error in
      if error != nil {
        // Handle error.
      }
      // User is signed in.
      // IdP data available in authResult.additionalUserInfo.profile.
      // Yahoo OAuth access token can also be retrieved by:
      // (authResult.credential as? OAuthCredential)?.accessToken
      // Yahoo OAuth ID token can be retrieved by calling:
      // (authResult.credential as? OAuthCredential)?.idToken
    }
    }
    }
        

    Objective-C

    [provider getCredentialWithUIDelegate:nil
                           completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) {
    if (error) {
    // Handle error.
    }
    if (credential) {
    [[FIRAuth auth] signInWithCredential:credential
                              completion:^(FIRAuthDataResult *_Nullable authResult, NSError *_Nullable error) {
      if (error) {
        // Handle error.
      }
      // User is signed in.
      // IdP data available in authResult.additionalUserInfo.profile.
      // Yahoo OAuth access token can also be retrieved by:
      // ((FIROAuthCredential *)authResult.credential).accessToken
      // Yahoo OAuth ID token can be retrieved by calling:
      // ((FIROAuthCredential *)authResult.credential).idToken
    }];
    }
    }];
        

    OAuth erişim jetonunu kullanarak Yahoo API'sı.

    Örneğin, temel profil bilgilerini almak için REST API'yi çağırabilir. Authorization üstbilgisindeki erişim jetonunu iletmek:

    https://social.yahooapis.com/v1/user/YAHOO_USER_UID/profile?format=json
    

    Burada YAHOO_USER_UID, Yahoo kullanıcısının kimliğidir ve şuradan alınabilir: Auth.auth.currentUser.providerData[0].uid alanından veya authResult.additionalUserInfo.profile.

  7. Yukarıdaki örneklerde oturum açma akışlarına odaklanılsa da kullanarak bir Yahoo sağlayıcısını mevcut bir kullanıcıya bağlama linkWithPopup Örneğin, birden çok sağlayıcıyı aynı kullanıcıya vererek ikisinden biriyle oturum açmalarını sağlar.

    Swift

    Auth().currentUser.link(withCredential: credential) { authResult, error in
    if error != nil {
    // Handle error.
    }
    // Yahoo credential is linked to the current user.
    // IdP data available in authResult.additionalUserInfo.profile.
    // Yahoo OAuth access token can also be retrieved by:
    // (authResult.credential as? OAuthCredential)?.accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // (authResult.credential as? OAuthCredential)?.idToken
    }
        

    Objective-C

    [[FIRAuth auth].currentUser
    linkWithCredential:credential
            completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
    if (error) {
    // Handle error.
    }
    // Yahoo credential is linked to the current user.
    // IdP data available in authResult.additionalUserInfo.profile.
    // Yahoo OAuth access token is can also be retrieved by:
    // ((FIROAuthCredential *)authResult.credential).accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // ((FIROAuthCredential *)authResult.credential).idToken
    }];
        
  8. Aynı desen aşağıdaki Şu amaçlarla kullanılabilir: reauthenticateWithPopup/reauthenticateWithRedirect yakın zamanda işlem yapılmasını gerektiren hassas işlemler için yeni kimlik bilgilerini alma giriş yapın.

    Swift

    Auth().currentUser.reauthenticateWithCredential(withCredential: credential) { authResult, error in
    if error != nil {
    // Handle error.
    }
    // User is re-authenticated with fresh tokens minted and
    // should be able to perform sensitive operations like account
    // deletion and email or password update.
    // IdP data available in result.additionalUserInfo.profile.
    // Additional OAuth access token is can also be retrieved by:
    // (authResult.credential as? OAuthCredential)?.accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // (authResult.credential as? OAuthCredential)?.idToken
    }
        

    Objective-C

    [[FIRAuth auth].currentUser
    reauthenticateWithCredential:credential
                      completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
    if (error) {
    // Handle error.
    }
    // User is re-authenticated with fresh tokens minted and
    // should be able to perform sensitive operations like account
    // deletion and email or password update.
    // IdP data available in result.additionalUserInfo.profile.
    // Additional OAuth access token is can also be retrieved by:
    // ((FIROAuthCredential *)authResult.credential).accessToken
    // Yahoo OAuth ID token can be retrieved by calling:
    // ((FIROAuthCredential *)authResult.credential).idToken
    }];
        

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: User nesnesini tanımlayın. Kullanıcıları Yönetme başlıklı makaleye göz atın.

  • 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: değerleridir.

Swift

let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}

Objective-C

NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

Ayrıca tüm kimlik doğrulama aralığı için hata işleme kodu da ekleyebilirsiniz. hatalar. Hataları İşleme bölümüne bakın.