Nutzer mit Google anmelden
In diesem Artikel erfahren Sie, wie Sie Nutzer mit Identity Platform in Google anmelden.
Hinweis
In dieser Anleitung wird davon ausgegangen, dass Sie Identity Platform bereits aktiviert und eine einfache Webanwendung erstellt haben, die mit HTML und JavaScript geschrieben wurde. Weitere Informationen dazu finden Sie in der Kurzanleitung.
Google als Anbieter konfigurieren
So konfigurieren Sie Google als Identitätsanbieter:
Rufen Sie in der Google Cloud Console die Seite Identitätsanbieter auf.
Klicken Sie auf Anbieter hinzufügen.
Wählen Sie Google aus der Liste aus.
Geben Sie Ihre Google Web-Client-ID und das Web-Secret ein. Wenn Sie noch keine ID und kein Secret haben, können Sie diese auf der Seite APIs & Dienste erhalten.
Konfigurieren Sie den unter Google konfigurieren aufgeführten URI als gültigen OAuth-Weiterleitungs-URI für Ihre Google-Anwendung. Wenn Sie in Identity Platform eine benutzerdefinierte Domain konfiguriert haben, aktualisieren Sie den Weiterleitungs-URI in der Google App-Konfiguration, damit die benutzerdefinierte Domain anstelle der Standarddomain verwendet wird. Ändern Sie beispielsweise
https://myproject.firebaseapp.com/__/auth/handler
inhttps://auth.myownpersonaldomain.com/__/auth/handler
.Klicken Sie unter Autorisierte Domains auf Domain hinzufügen, um die Domains Ihrer Anwendung zu registrieren. Für Entwicklungszwecke ist
localhost
bereits standardmäßig aktiviert.Klicken Sie unter Anwendung konfigurieren auf Einrichtungsdetails. Kopieren Sie das Snippet in den Code Ihrer Anwendung, um das Identity Platform Client SDK zu initialisieren.
Klicken Sie auf Speichern.
Nutzer mit dem Client SDK anmelden
Erstellen Sie eine Instanz des Google-Anbieter-Objekts:
Webversion 9
import { GoogleAuthProvider } from "firebase/auth"; const provider = new GoogleAuthProvider();
Webversion 8
var provider = new firebase.auth.GoogleAuthProvider();
Optional: Fügen Sie OAuth-Bereiche hinzu. Die Bereiche legen fest, welche Daten Sie von Google anfordern. Für sensiblere Daten sind möglicherweise spezielle Bereiche erforderlich. In der Dokumentation des Anbieters können Sie ermitteln, welche Bereiche Ihre Anwendung benötigt.
Webversion 9
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
Webversion 8
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
Optional: Lokalisieren Sie den Authentifizierungsablauf. Sie können eine Sprache angeben oder die Standardsprache des Geräts verwenden:
Webversion 9
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Webversion 8
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
Optional: Geben Sie zusätzliche benutzerdefinierte OAuth-Parameter an. Sie gelten speziell für Google und werden meist verwendet, um das Authentifizierungserlebnis anzupassen. Sie können keine von OAuth oder Identity Platform reservierten Parameter übergeben.
Webversion 9
provider.setCustomParameters({ 'login_hint': 'user@example.com' });
Webversion 8
provider.setCustomParameters({ 'login_hint': 'user@example.com' });
Verwenden Sie das Google-Anbieterobjekt, um den Nutzer anzumelden. Sie können entweder ein Pop-up-Fenster öffnen oder die aktuelle Seite weiterleiten. Für Nutzer von Mobilgeräten ist die Weiterleitung einfacher.
Rufen Sie
signInWithPopup()
auf, um ein Pop-up-Fenster einzublenden:Webversion 9
import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // This gives you a Google Access Token. You can use it to access the Google API. const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential.accessToken; // The signed-in user info. const user = result.user; // IdP data available using getAdditionalUserInfo(result) // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = GoogleAuthProvider.credentialFromError(error); // ... });
Webversion 8
firebase.auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. You can use it to access the Google API. var token = credential.accessToken; // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
Rufen Sie zum Weiterleiten der Seite zuerst
signInWithRedirect()
auf.Beachten Sie die Best Practices, wenn Sie
signInWithRedirect
,linkWithRedirect
oderreauthenticateWithRedirect
verwenden.Webversion 9
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Webversion 8
firebase.auth().signInWithRedirect(provider);
Rufen Sie dann das Google-Token beim Laden der Seite ab. Rufen Sie dazu
getRedirectResult()
auf:Webversion 9
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // This gives you a Google Access Token. You can use it to access Google APIs. const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential.accessToken; // The signed-in user info. const user = result.user; // IdP data available using getAdditionalUserInfo(result) // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = GoogleAuthProvider.credentialFromError(error); // ... });
Webversion 8
firebase.auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. You can use it to access the Google API. var token = credential.accessToken; // ... } // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
Sobald Sie ein Zugriffstoken haben, können Sie es zum Aufrufen der Google API verwenden. Beispiel:
REST
curl -H "Authorization: Bearer [TOKEN]" https://www.googleapis.com/oauth2/v2/userinfo
Nutzer manuell anmelden
Wenn Sie das Client SDK nicht verwenden möchten, können Sie den Anmeldevorgang auch manuell ausführen:
Binden Sie die Google-Authentifizierung in Ihre Anwendung ein. Folgen Sie dazu den Schritten in der Entwicklerdokumentation.
Melden Sie sich in Google an. Verwenden Sie dazu den Ablauf, den Sie im vorherigen Schritt implementiert haben.
Tauschen Sie das Token, das Sie von Google erhalten, gegen Anmeldedaten für Identity Platform ein:
Webversion 9
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential(idToken);
Webversion 8
var credential = firebase.auth.GoogleAuthProvider.credential(idToken);
Verwenden Sie die Anmeldedaten, um den Nutzer mit Identity Platform anzumelden:
Webversion 9
import { getAuth, signInWithCredential } from "firebase/auth"; // Sign in with the credential from the user. const auth = getAuth(); signInWithCredential(auth, credential) .then((result) => { // Signed in // ... }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // ... });
Webversion 8
// Sign in with the credential from the user. firebase.auth() .signInWithCredential(credential) .then((result) => { // Signed in // ... }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.email; // ... });
Nächste Schritte
- Weitere Informationen zu Identity Platform-Nutzern
- Nutzer mit anderen Identitätsanbietern anmelden