Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Föderierte Identität und soziale Anmeldung

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Die soziale Authentifizierung ist ein mehrstufiger Authentifizierungsablauf, mit dem Sie einen Benutzer bei einem Konto anmelden oder ihn mit einem vorhandenen verknüpfen können.

Sowohl native Plattformen als auch das Web unterstützen die Erstellung eines Berechtigungsnachweises, der dann an die Methoden signInWithCredential oder linkWithCredential werden kann. Alternativ können Sie auf Webplattformen den Authentifizierungsprozess über ein Popup oder eine Weiterleitung auslösen.

Google

Die meisten Konfigurationen sind bereits eingerichtet, wenn Sie Google Sign-in mit Firebase verwenden, Sie müssen jedoch sicherstellen, dass der SHA1-Schlüssel Ihres Computers für die Verwendung mit Android konfiguriert wurde. Wie Sie den Schlüssel generieren, können Sie der Authentifizierungsdokumentation entnehmen .

Stellen Sie sicher, dass der Anmeldeanbieter „Google“ in der Firebase-Konsole aktiviert ist .

Wenn sich Ihr Benutzer bei Google anmeldet, nachdem er bereits manuell ein Konto registriert hat, wechselt sein Authentifizierungsanbieter aufgrund des Firebase-Authentifizierungskonzepts vertrauenswürdiger Anbieter automatisch zu Google. Mehr dazu erfahren Sie hier .

iOS+ und Android

Auf nativen Plattformen ist eine Bibliothek eines Drittanbieters erforderlich, um den Authentifizierungsfluss auszulösen.

Installieren Sie das offizielle Plugin google_sign_in .

Lösen Sie nach der Installation den Anmeldevorgang aus und erstellen Sie neue Anmeldeinformationen:

import 'package:google_sign_in/google_sign_in.dart';

Future<UserCredential> signInWithGoogle() async {
  // Trigger the authentication flow
  final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();

  // Obtain the auth details from the request
  final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication;

  // Create a new credential
  final credential = GoogleAuthProvider.credential(
    accessToken: googleAuth?.accessToken,
    idToken: googleAuth?.idToken,
  );

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithCredential(credential);
}

Netz

Im Web bietet das Firebase SDK Unterstützung für die automatische Verarbeitung des Authentifizierungsablaufs mithilfe Ihres Firebase-Projekts. Zum Beispiel:

Erstellen Sie einen Google-Authentifizierungsanbieter und geben Sie alle zusätzlichen Berechtigungsbereiche an, die Sie vom Benutzer erhalten möchten:

GoogleAuthProvider googleProvider = GoogleAuthProvider();

googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
  'login_hint': 'user@example.com'
});

Stellen Sie die Anmeldeinformationen für die signInWithPopup Methode bereit. Dadurch wird ein neues Fenster angezeigt, in dem der Benutzer aufgefordert wird, sich bei Ihrem Projekt anzumelden. Alternativ können Sie signInWithRedirect verwenden, um den Authentifizierungsprozess im selben Fenster zu halten.

Future<UserCredential> signInWithGoogle() async {
  // Create a new provider
  GoogleAuthProvider googleProvider = GoogleAuthProvider();

  googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
  googleProvider.setCustomParameters({
    'login_hint': 'user@example.com'
  });

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithPopup(googleProvider);

  // Or use signInWithRedirect
  // return await FirebaseAuth.instance.signInWithRedirect(googleProvider);
}

Google Play-Spiele

Sie können Benutzer in Ihrem Android-Spiel mit der Play Games-Anmeldung authentifizieren.

Android

Befolgen Sie die Anweisungen für die Google-Einrichtung auf Android und konfigurieren Sie dann die Play Games-Dienste mit Ihren Firebase-App-Informationen .

Folgendes löst den Anmeldeablauf aus, erstellt neue Anmeldeinformationen und meldet den Benutzer an:

final googleUser = await GoogleSignIn(
  signInOption: SignInOption.games,
).signIn();

final googleAuth = await googleUser?.authentication;

if (googleAuth != null) {
  // Create a new credential
  final credential = GoogleAuthProvider.credential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

  // Once signed in, return the UserCredential
  await _auth.signInWithCredential(credential);
}

Facebook

Bevor Sie beginnen, richten Sie Ihre Facebook-Entwickler-App ein und folgen Sie dem Einrichtungsprozess, um die Facebook-Anmeldung zu aktivieren.

Stellen Sie sicher, dass der Anmeldeanbieter „Facebook“ in der Firebase-Konsole aktiviert ist . mit der Facebook-App-ID und dem Secret-Set.

iOS+ und Android

Auf nativen Plattformen ist eine Bibliothek eines Drittanbieters erforderlich, um sowohl das Facebook-SDK zu installieren als auch den Authentifizierungsablauf auszulösen.

Installieren Sie das flutter_facebook_auth Plugin.

Sie müssen die Schritte in der Plugin-Dokumentation befolgen, um sicherzustellen, dass sowohl die Android- als auch die iOS-Facebook-SDKs korrekt initialisiert wurden. Lösen Sie nach Abschluss den Anmeldevorgang aus, erstellen Sie eine Facebook-Anmeldeinformation und melden Sie den Benutzer an:

import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';

Future<UserCredential> signInWithFacebook() async {
  // Trigger the sign-in flow
  final LoginResult loginResult = await FacebookAuth.instance.login();

  // Create a credential from the access token
  final OAuthCredential facebookAuthCredential = FacebookAuthProvider.credential(loginResult.accessToken.token);

  // Once signed in, return the UserCredential
  return FirebaseAuth.instance.signInWithCredential(facebookAuthCredential);
}

Netz

Im Web bietet das Firebase SDK Unterstützung für die automatische Verarbeitung des Authentifizierungsablaufs mithilfe der Facebook-Anwendungsdetails, die in der Firebase-Konsole bereitgestellt werden. Zum Beispiel:

Erstellen Sie einen Facebook-Anbieter und geben Sie alle zusätzlichen Berechtigungsbereiche an, die Sie vom Benutzer erhalten möchten.

Stellen Sie sicher, dass der OAuth-Umleitungs-URI aus der Firebase-Konsole als gültiger OAuth-Umleitungs-URI in Ihrer Facebook-App hinzugefügt wird.

FacebookAuthProvider facebookProvider = FacebookAuthProvider();

facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
  'display': 'popup',
});

Stellen Sie die Anmeldeinformationen für die signInWithPopup Methode bereit. Dadurch wird ein neues Fenster angezeigt, in dem der Benutzer aufgefordert wird, sich bei Ihrer Facebook-Anwendung anzumelden:

Future<UserCredential> signInWithFacebook() async {
  // Create a new provider
  FacebookAuthProvider facebookProvider = FacebookAuthProvider();

  facebookProvider.addScope('email');
  facebookProvider.setCustomParameters({
    'display': 'popup',
  });

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithPopup(facebookProvider);

  // Or use signInWithRedirect
  // return await FirebaseAuth.instance.signInWithRedirect(facebookProvider);
}

Apfel

iOS+

Bevor Sie beginnen, konfigurieren Sie die Anmeldung mit Apple und aktivieren Sie Apple als Anmeldeanbieter .

Stellen Sie als Nächstes sicher, dass Ihre Runner -Apps über die Funktion „Mit Apple anmelden“ verfügen.

Android

Bevor Sie beginnen, konfigurieren Sie die Anmeldung mit Apple und aktivieren Sie Apple als Anmeldeanbieter .

Netz

Bevor Sie beginnen, konfigurieren Sie die Anmeldung mit Apple und aktivieren Sie Apple als Anmeldeanbieter .

import 'package:firebase_auth/firebase_auth.dart';

Future<UserCredential> signInWithApple() async {
  final appleProvider = AppleAuthProvider();
  if (kIsWeb) {
    await FirebaseAuth.instance.signInWithPopup(appleProvider);
  } else {
    await FirebaseAuth.instance.signInWithProvider(appleProvider);
  }
}

Microsoft

iOS+

Bevor Sie beginnen, konfigurieren Sie Microsoft Login für iOS und fügen Sie Ihrem Runner die benutzerdefinierten URL-Schemata hinzu (Schritt 1) ​​.

Android

Bevor Sie beginnen, konfigurieren Sie Microsoft Login für Android .

Vergessen Sie nicht, den SHA-1-Fingerabdruck Ihrer App hinzuzufügen.

Netz

Bevor Sie beginnen, konfigurieren Sie Microsoft Login für Web .

import 'package:firebase_auth/firebase_auth.dart';

Future<UserCredential> signInWithMicrosoft() async {
  final microsoftProvider = MicrosoftAuthProvider();
  if (kIsWeb) {
    await FirebaseAuth.instance.signInWithPopup(microsoftProvider);
  } else {
    await FirebaseAuth.instance.signInWithProvider(microsoftProvider);
  }
}

Twitter

Stellen Sie sicher, dass der Anmeldeanbieter „Twitter“ auf der Firebase-Konsole mit einem API-Schlüssel und einem API-Secret-Satz aktiviert ist. Stellen Sie sicher, dass Ihr Firebase-OAuth-Umleitungs-URI (z. B. my-app-12345.firebaseapp.com/__/auth/handler) als Rückruf-URL für die Autorisierung auf der Einstellungsseite Ihrer App in der Konfiguration Ihrer Twitter-App festgelegt ist .

Abhängig von Ihrer App müssen Sie möglicherweise auch erhöhten API-Zugriff anfordern.

iOS+

Sie müssen Ihr benutzerdefiniertes URL-Schema wie in Schritt 1 der iOS-Anleitung beschrieben konfigurieren.

Android

Wenn Sie den SHA-1-Fingerabdruck Ihrer App noch nicht angegeben haben, tun Sie dies auf der Seite „Einstellungen“ der Firebase-Konsole. Weitere Informationen zum Abrufen des SHA-1-Fingerabdrucks Ihrer App finden Sie unter Authentifizieren Ihres Clients .

Netz

Funktioniert out-of-the-box.

import 'package:firebase_auth/firebase_auth.dart';

Future<void> _signInWithTwitter() async {
  TwitterAuthProvider twitterProvider = TwitterAuthProvider();

  if (kIsWeb) {
    await FirebaseAuth.instance.signInWithPopup(twitterProvider);
  } else {
    await FirebaseAuth.instance.signInWithProvider(twitterProvider);
  }
}

GitHub

Stellen Sie sicher, dass Sie eine OAuth-App über Ihre GitHub-Entwicklereinstellungen eingerichtet haben und dass der „GitHub“-Anmeldeanbieter auf der Firebase-Konsole aktiviert ist, wobei die Client-ID und das Geheimnis festgelegt sind, wobei die Rückruf-URL in der GitHub-App festgelegt ist.

iOS+ und Android

Für native Plattformen müssen Sie google-services.json und GoogleService-Info.plist .

Fügen Sie für iOS das benutzerdefinierte URL-Schema hinzu, wie in Schritt 1 der iOS-Anleitung beschrieben .

Future<UserCredential> signInWithGitHub() async {
  // Create a new provider
  GithubAuthProvider githubProvider = GithubAuthProvider();

  return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}

Netz

Im Web bietet das GitHub SDK Unterstützung für die automatische Verarbeitung des Authentifizierungsablaufs mithilfe der GitHub-Anwendungsdetails, die in der Firebase-Konsole bereitgestellt werden. Stellen Sie sicher, dass die Rückruf-URL in der Firebase-Konsole als Rückruf-URL in Ihrer GitHub-Anwendung in der Entwicklerkonsole hinzugefügt wird.

Zum Beispiel:

Erstellen Sie einen GitHub-Anbieter und stellen Sie die Anmeldeinformationen für die signInWithPopup Methode bereit. Dadurch wird ein neues Fenster angezeigt, in dem der Benutzer aufgefordert wird, sich bei Ihrer GitHub-Anwendung anzumelden:

Future<UserCredential> signInWithGitHub() async {
  // Create a new provider
  GithubAuthProvider githubProvider = GithubAuthProvider();

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithPopup(githubProvider);

  // Or use signInWithRedirect
  // return await FirebaseAuth.instance.signInWithRedirect(githubProvider);
}

Yahoo

Stellen Sie sicher, dass der Anmeldeanbieter „Yahoo“ in der Firebase-Konsole mit einem API-Schlüssel und einem API-Geheimnissatz aktiviert ist. Stellen Sie außerdem sicher, dass Ihr Firebase-OAuth-Umleitungs-URI (z. B. my-app-12345.firebaseapp.com/__/auth/handler) als Umleitungs-URI in der Yahoo Developer Network-Konfiguration Ihrer App festgelegt ist.

iOS+

Bevor Sie beginnen, konfigurieren Sie Yahoo Login für iOS und fügen Sie die benutzerdefinierten URL-Schemata zu Ihrem Runner hinzu (Schritt 1) ​​.

Android

Bevor Sie beginnen, konfigurieren Sie Yahoo Login für Android .

Vergessen Sie nicht, den SHA-1-Fingerabdruck Ihrer App hinzuzufügen.

Netz

Funktioniert out-of-the-box.

import 'package:firebase_auth/firebase_auth.dart';

Future<UserCredential> signInWithYahoo() async {
  final yahooProvider = YahooAuthProvider();
  if (kIsWeb) {
    await _auth.signInWithPopup(yahooProvider);
  } else {
    await _auth.signInWithProvider(yahooProvider);
  }
}

Verwenden des OAuth-Zugriffstokens

Durch die Verwendung eines AuthProviders können Sie das dem Anbieter zugeordnete Zugriffstoken abrufen, indem Sie die folgende Anforderung stellen.

final appleProvider = AppleAuthProvider();

final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;

// You can send requests with the `accessToken`

Verknüpfung eines Authentifizierungsanbieters

Wenn Sie einen Anbieter mit einem aktuellen Benutzer verknüpfen möchten, können Sie die folgende Methode verwenden: ```dart await FirebaseAuth.instance.signInAnonymously();

final appleProvider = AppleAuthProvider();

if (kIsWeb) { await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);

// Sie können auch linkWithRedirect verwenden } else { await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }

// Ihr anonymer Benutzer ist jetzt aktualisiert, um sich mit Sign In With Apple ``` verbinden zu können

Authentifizieren Sie sich erneut beim Anbieter

Dasselbe Muster kann mit reauthenticateWithProvider verwendet werden, mit dem neue Anmeldeinformationen für vertrauliche Vorgänge abgerufen werden können, die eine kürzlich erfolgte Anmeldung erfordern.

final appleProvider = AppleAuthProvider();

if (kIsWeb) {
  await FirebaseAuth.instance.currentUser?.reauthenticateWithPopup(appleProvider);
  
  // Or you can reauthenticate with a redirection
  // await FirebaseAuth.instance.currentUser?.reauthenticateWithRedirect(appleProvider);
} else {
  await FirebaseAuth.instance.currentUser?.reauthenticateWithProvider(appleProvider);
}

// You can now perform sensitive operations