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

Authentifizieren mit Twitter auf Apple-Plattformen

Sie können Ihren Benutzern die Authentifizierung bei Firebase über OAuth-Anbieter wie Twitter ermöglichen, indem Sie eine generische OAuth-Anmeldung mit dem Firebase SDK in Ihre App integrieren, um den End-to-End-Anmeldevorgang durchzuführen.

Bevor Sie beginnen

Verwenden Sie den Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.

  1. In Xcode, mit Ihrem App - Projekt zu öffnen, navigieren Sie zu Datei> Swift Packages> Paket hinzufügen Abhängigkeit.
  2. Wenn Sie dazu aufgefordert werden, fügen Sie das SDK-Repository der Firebase Apple Platforms hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Wählen Sie die Firebase Authentication-Bibliothek aus.
  5. Wenn Sie fertig sind, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.

Um Benutzer mit Twitter-Konten anzumelden, müssen Sie zunächst Twitter als Anmeldeanbieter für Ihr Firebase-Projekt aktivieren:

  1. In Firebase zu Ihrem Apple - Projekt .

  2. Fügen Sie die folgenden Schoten in Ihrem Podfile :

    pod 'Firebase/Auth'
    
  3. In der Firebase Konsole , öffnen Sie den Abschnitt Auth.
  4. Auf dem Anmelden Methode Registerkarte, aktivieren Sie den Twitter - Anbieter.
  5. Fügen Sie den API - Schlüssel und API Geheimnis von den betreffenden Anbieter Entwickler - Konsole an die Provider - Konfiguration:
    1. Registrieren Sie Ihre App als Entwickler - Anwendung auf Twitter und erhalten Sie Ihre App-OAuth - API - Schlüssel und API Geheimnis.
    2. Stellen Sie sicher , dass Ihre Firebase OAuth Umleitung URI (zB my-app-12345.firebaseapp.com/__/auth/handler ) , wird als Ihre URL Authorization Rückrufs in Ihrem App - Einstellungen Seite auf Ihrem Twitter - App config .
  6. Klicken Sie auf Speichern.

Verwalten Sie den Anmeldevorgang mit dem Firebase SDK

Führen Sie die folgenden Schritte aus, um den Anmeldevorgang mit dem Firebase-SDK für Apple-Plattformen abzuwickeln:

  1. Fügen Sie Ihrem Xcode-Projekt benutzerdefinierte URL-Schemas hinzu:

    1. Öffnen Sie Ihre Projektkonfiguration: Doppelklicken Sie in der linken Baumansicht auf den Projektnamen. Wählen Sie Ihre App aus dem Abschnitt VORGABEN, wählen Sie dann die Registerkarte Info, und erweitern Sie den URL - Typen Abschnitt.
    2. Klicken Sie auf die Schaltfläche +, und fügen Sie eine URL - Schema für die Reversed - Client - ID. Um diesen Wert zu finden, öffnen Sie die GoogleService-Info.plist Konfigurationsdatei, und suchen Sie nach dem REVERSED_CLIENT_ID Schlüssel. Kopieren Sie den Wert dieses Schlüssels, und fügen Sie ihn in das URL - Schemata auf der Konfigurationsseite Feld. Lassen Sie die anderen Felder leer.

      Nach Abschluss sollte Ihre Konfiguration in etwa wie folgt aussehen (aber mit Ihren anwendungsspezifischen Werten):

  2. Erstellen Sie eine Instanz eines OAuthProvider mit dem Provider - ID twitter.com.

    Schnell

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

    Ziel c

        FIROAuthProvider *provider = [FIROAuthProvider providerWithProviderID:@"twitter.com"];
        
  3. Optional: Geben Sie zusätzliche benutzerdefinierte OAuth Parameter , die Sie mit dem OAuth Anfrage senden möchten.

    Schnell

        provider.customParameters = [
          "lang": "fr"
          ]
        

    Ziel c

        [provider setCustomParameters:@{@"lang": @"fr"}];
        

    Für die Parameter Twitter unterstützt, finden Sie in der Twitter OAuth Dokumentation . Beachten Sie, dass Sie nicht Firebase-erforderliche Parameter mit übergeben können setCustomParameters . Diese Parameter sind client_id, redirect_uri, response_type, Umfang und Zustand.

  4. Optional: Wenn Sie die Möglichkeit , Ihre App präsentiert die anpassen SFSafariViewController oder UIWebView , wenn die reCAPTCHA für den Benutzer, eine benutzerdefinierte Klasse erstellen , das entspricht das FIRAuthUIDelegate Protokoll und übergibt es an getCredentialWithUIDelegate:completion: .

  5. Authentifizieren Sie sich bei Firebase mithilfe des OAuth-Anbieterobjekts.

    Schnell

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

    Ziel 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.
              // Twitter OAuth access token can also be retrieved by:
              // authResult.credential.accessToken
              // Twitter OAuth ID token can be retrieved by calling:
              // authResult.credential.idToken
              // Twitter OAuth secret can be retrieved by calling:
              // authResult.credential.secret
            }];
          }
        }];
        

    Unter Verwendung der OAuth - Zugriffstoken, können Sie den Anruf Twitter API .

    Zum Beispiel Grundprofil Informationen zu erhalten, können Sie die REST - API aufrufen, die Zugriff vorbei in den Token - Authorization - Header:

    https://api.twitter.com/labs/1/users?usernames=TwitterDev
    
  6. Während sich die obigen Beispiele auf Anmeldeabläufe konzentrieren, haben Sie auch die Möglichkeit, einen Twitter-Anbieter mit einem vorhandenen Benutzer zu verknüpfen. Sie können beispielsweise mehrere Anbieter mit demselben Benutzer verknüpfen, sodass sie sich bei beiden anmelden können.

    Schnell

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

    Ziel c

        [[FIRAuth auth].currentUser
            linkWithCredential:credential
                    completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
          if (error) {
            // Handle error.
          }
          // Twitter credential is linked to the current user.
          // IdP data available in authResult.additionalUserInfo.profile.
          // Twitter OAuth access token is can also be retrieved by:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }];
        
  7. Das gleiche Muster kann mit verwendet wird reauthenticateWithCredential die verwendet werden können frische Anmeldeinformationen für sensible Vorgänge abzurufen , die letzte Anmeldung erforderlich.

    Schnell

        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.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }
        

    Ziel 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:
          // authResult.credential.accessToken
          // Twitter OAuth ID token can be retrieved by calling:
          // authResult.credential.idToken
          // Twitter OAuth secret can be retrieved by calling:
          // authResult.credential.secret
        }];
        

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal anmeldet, wird ein neues Benutzerkonto erstellt und mit den Anmeldeinformationen – d. h. Benutzername und Kennwort, Telefonnummer oder Authentifizierungsanbieterinformationen – verknüpft, mit denen sich der Benutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Benutzer in jeder App in Ihrem Projekt zu identifizieren, unabhängig davon, wie sich der Benutzer anmeldet.

  • In Ihren Anwendungen können Sie die Benutzerprofilgrundinformationen aus dem bekommen FIRUser Objekt. Siehe Benutzer verwalten .

  • In Ihrer Datenbank und Firebase Realtime Cloud Storage Sicherheitsregeln , können Sie die angemeldeten Nutzer die eindeutige Benutzer - ID aus der bekommen auth Variable, und es verwenden , um steuern kann ein Benutzer Zugriff , welche Daten.

Sie können Benutzer erlauben , durch mehrere Authentifizierungsanbieter anmelden, um Ihre App Verknüpfung Auth - Provider - Anmeldeinformationen zu einem vorhandenen Benutzerkonto.

Um einen Benutzer abzumelden, rufen signOut: .

Schnell

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

Ziel c

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

Möglicherweise möchten Sie auch einen Fehlerbehandlungscode für alle Authentifizierungsfehler hinzufügen. Siehe Handle Fehler .