Sie können Ihre Nutzer über ihre Twitter-Konten bei Firebase authentifizieren, indem Sie die webbasierte generische OAuth-Anmeldung mithilfe des Firebase SDK in Ihre App einbinden, um den End-to-End-Anmeldevorgang durchzuführen.
Hinweis
Um Nutzer mit Twitter-Konten anzumelden, müssen Sie zunächst Twitter als Anmeldeanbieter für Ihr Firebase-Projekt:
Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.
- Öffnen Sie in der Firebase Console den Bereich Auth.
- Aktivieren Sie auf dem Tab Anmeldemethode den Twitter-Anbieter.
- Fügen Sie der Anbieterkonfiguration den API-Schlüssel und das API-Secret aus der Entwicklerkonsole des Anbieters hinzu:
- App registrieren als Entwickleranwendung auf Twitter und rufen Sie den OAuth-API-Schlüssel Ihrer App ab. und API-Secret.
- Prüfen Sie, ob der OAuth-Weiterleitungs-URI von Firebase (z.B.
my-app-12345.firebaseapp.com/__/auth/handler
) die als Callback-URL für die Autorisierung festgelegt ist. Wählen Sie dazu in den App-Einstellungen auf Ihrem Konfiguration der Twitter-App
- Klicken Sie auf Speichern.
In der Gradle-Datei des Moduls (auf App-Ebene) (normalerweise
<project>/<app-module>/build.gradle.kts
oder<project>/<app-module>/build.gradle
) Fügen Sie die Abhängigkeit für die Firebase Authentication-Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM-Taste zu verwenden, um die Versionierung der Bibliothek zu steuern.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.4.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
Mit dem Firebase Android BoM Ihre App verwendet immer kompatible Versionen der Firebase Android Libraries.
(Alternative) Firebase-Bibliotheksabhängigkeiten ohne BoM hinzufügen
Wenn Sie die Firebase BoM nicht verwenden, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden Abhängigkeitszeile angeben.
Wenn Sie in Ihrer App mehrere Firebase-Bibliotheken verwenden, empfehlen, Bibliotheksversionen mit der BoM zu verwalten. Dadurch wird sichergestellt, dass alle Versionen kompatibel.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.0.0") }
Wenn Sie den SHA-1-Fingerabdruck Ihrer App noch nicht angegeben haben, tun Sie dies über das Seite „Einstellungen“ der Firebase-Konsole. Weitere Informationen zum Abrufen des SHA-1-Fingerabdrucks Ihrer App finden Sie unter Client authentifizieren.
Anmeldevorgang mit dem Firebase SDK durchführen
Wenn Sie eine Android-App erstellen, ist es am einfachsten, Ihre Nutzer zu authentifizieren. mit Firebase über ihre Twitter-Konten die gesamte Anmeldung mit dem Firebase Android SDK.
So verwalten Sie den Anmeldevorgang mit dem Firebase Android SDK:
Erstellen einer Instanz eines OAuthProvider-Objekts mithilfe des Builder mit der Anbieter-ID Twitter.com
Kotlin+KTX
val provider = OAuthProvider.newBuilder("twitter.com")
Java
OAuthProvider.Builder provider = OAuthProvider.newBuilder("twitter.com");
Optional: Geben Sie zusätzliche benutzerdefinierte OAuth-Parameter an, die Sie mit der OAuth-Anfrage senden.
Kotlin+KTX
// Localize to French. provider.addCustomParameter("lang", "fr")
Java
// Localize to French. provider.addCustomParameter("lang", "fr");
Informationen zu den von Twitter unterstützten Parametern findest du in der Twitter OAuth-Dokumentation. Hinweis: Sie können keine für Firebase erforderlichen Parameter mit
setCustomParameters()
übergeben. Diese Parameter sind client_id, response_type, redirect_uri, state, scope und response_mode zurückgegeben.Authentifizierung mit Firebase über das OAuth-Anbieterobjekt Im Gegensatz zu Andere FirebaseAuth wird die Benutzeroberfläche gesteuert, indem ein Pop-up-Fenster Benutzerdefinierter Chrome-Tab: Daher solltest du auf deine „Aktivitäten“ im
OnSuccessListener
nicht verweisen undOnFailureListener
, die angehängt werden, da sie sofort getrennt werden, wenn wird die Benutzeroberfläche gestartet.Prüfen Sie zuerst, ob Sie bereits eine Antwort erhalten haben. Bei der Anmeldung über diese Methode wird Ihre Aktivität im Hintergrund ausgeführt, was bedeutet, dass sie während des Anmeldevorgangs vom System zurückgerufen werden kann. Damit der Nutzer nicht noch einmal versuchen muss, sollten Sie prüfen, ob ein Ergebnis bereits vorhanden ist.
Rufe
getPendingAuthResult
auf, um zu prüfen, ob ein Ergebnis aussteht:Kotlin+KTX
val pendingResultTask = firebaseAuth.pendingAuthResult if (pendingResultTask != null) { // There's something already here! Finish the sign-in for your user. pendingResultTask .addOnSuccessListener { // User is signed in. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // ((OAuthCredential)authResult.getCredential()).getAccessToken(). // The OAuth secret can be retrieved by calling: // ((OAuthCredential)authResult.getCredential()).getSecret(). } .addOnFailureListener { // Handle failure. } } else { // There's no pending result so you need to start the sign-in flow. // See below. }
Java
Task<AuthResult> pendingResultTask = firebaseAuth.getPendingAuthResult(); if (pendingResultTask != null) { // There's something already here! Finish the sign-in for your user. pendingResultTask .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // User is signed in. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // ((OAuthCredential)authResult.getCredential()).getAccessToken(). // The OAuth secret can be retrieved by calling: // ((OAuthCredential)authResult.getCredential()).getSecret(). } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Handle failure. } }); } else { // There's no pending result so you need to start the sign-in flow. // See below. }
Rufe
startActivityForSignInWithProvider
auf, um den Anmeldevorgang zu starten:Kotlin+KTX
firebaseAuth .startActivityForSignInWithProvider(activity, provider.build()) .addOnSuccessListener { // User is signed in. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // ((OAuthCredential)authResult.getCredential()).getAccessToken(). // The OAuth secret can be retrieved by calling: // ((OAuthCredential)authResult.getCredential()).getSecret(). } .addOnFailureListener { // Handle failure. }
Java
firebaseAuth .startActivityForSignInWithProvider(/* activity= */ this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // User is signed in. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // ((OAuthCredential)authResult.getCredential()).getAccessToken(). // The OAuth secret can be retrieved by calling: // ((OAuthCredential)authResult.getCredential()).getSecret(). } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Handle failure. } });
Nach erfolgreichem Abschluss kann das mit dem Anbieter verknüpfte OAuth-Zugriffstoken aus dem zurückgegebenen
OAuthCredential
-Objekt abgerufen werden.Mit dem OAuth-Zugriffstoken können Sie die Methode Twitter API
Um beispielsweise grundlegende Profilinformationen abzurufen, können Sie die REST API aufrufen, und übergeben das Zugriffstoken im Header
Authorization
:In den obigen Beispielen liegt der Schwerpunkt auf den Anmeldeabläufen. Mit
startActivityForLinkWithProvider
können Sie aber auch einen Twitter-Anbieter mit einem vorhandenen Nutzer verknüpfen. Sie können beispielsweise mehrere Anbieter mit demselben Nutzer verknüpfen, damit er sich mit einem beliebigen davon anmelden kann.Kotlin+KTX
// The user is already signed-in. val firebaseUser = firebaseAuth.currentUser!! firebaseUser .startActivityForLinkWithProvider(activity, provider.build()) .addOnSuccessListener { // Provider credential is linked to the current user. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // authResult.getCredential().getAccessToken(). // The OAuth secret can be retrieved by calling: // authResult.getCredential().getSecret(). } .addOnFailureListener { // Handle failure. }
Java
// The user is already signed-in. FirebaseUser firebaseUser = firebaseAuth.getCurrentUser(); firebaseUser .startActivityForLinkWithProvider(/* activity= */ this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // Provider credential is linked to the current user. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // authResult.getCredential().getAccessToken(). // The OAuth secret can be retrieved by calling: // authResult.getCredential().getSecret(). } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Handle failure. } });
Dasselbe Muster kann mit
startActivityForReauthenticateWithProvider
verwendet werden, um aktuelle Anmeldedaten für vertrauliche Vorgänge abzurufen, für die eine aktuelle Anmeldung erforderlich ist.Kotlin+KTX
// The user is already signed-in. val firebaseUser = firebaseAuth.currentUser!! firebaseUser .startActivityForReauthenticateWithProvider(activity, provider.build()) .addOnSuccessListener { // User is re-authenticated with fresh tokens and // should be able to perform sensitive operations // like account deletion and email or password // update. } .addOnFailureListener { // Handle failure. }
Java
// The user is already signed-in. FirebaseUser firebaseUser = firebaseAuth.getCurrentUser(); firebaseUser .startActivityForReauthenticateWithProvider(/* activity= */ this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // User is re-authenticated with fresh tokens and // should be able to perform sensitive operations // like account deletion and email or password // update. } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Handle failure. } });
Nächste Schritte
Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und mit den Anmeldedaten verknüpft, d. h. mit dem Nutzernamen und Passwort, der Telefonnummer oder den Informationen zum Authentifizierungsanbieter, mit denen sich der Nutzer angemeldet hat. Diese neue -Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um in jeder App in Ihrem Projekt einen Nutzer erreichen, unabhängig davon, wie er sich anmeldet.
-
In Ihren Apps können Sie die grundlegenden Profilinformationen des Nutzers über das
FirebaseUser
-Objekt abrufen. Weitere Informationen finden Sie unter Nutzer verwalten. In Firebase Realtime Database und Cloud Storage Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen
auth
abrufen, und steuern, auf welche Daten ein Nutzer zugreifen kann.
Sie können Nutzern erlauben, sich mit Mehrfachauthentifizierung in Ihrer App anzumelden indem Sie die Anmeldedaten des Authentifizierungsanbieters mit einem eines bestehenden Nutzerkontos.
Rufen Sie auf, um einen Nutzer abzumelden.
signOut
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();