Nutzer mit Apple anmelden
In diesem Dokument wird gezeigt, wie Sie mithilfe von Identity Platform Mit Apple anmelden zu Ihrer Webanwendung hinzufügen.
Hinweis
Erstellen Sie eine einfache Webanwendung, die Identity Platform mit HTML und JavaScript nutzt. Weitere Informationen dazu finden Sie in der Kurzanleitung.
Nehmen Sie am Apple-Programm für Entwickler teil.
Anwendung mit Apple konfigurieren
Auf der Website für Apple-Entwickler:
Führen Sie die Schritte unter Mit Apple im Web anmelden aus. Dazu zählen:
Registrieren Sie eine Return-URL wie beispielsweise die folgende:
https://project-id.firebaseapp.com/__/auth/handler
Hosten Sie vorübergehend eine Datei unter der folgenden URL, um Ihre Domain zu bestätigen:
https://project-id.firebaseapp.com/.well-known/apple-developer-domain-association.txt
Notieren Sie sich außerdem Ihre Dienst-ID und Ihre Apple-Team-ID. Sie benötigen diese im nächsten Abschnitt.
Mit einem privaten Apple-Schlüssel eine Anmeldung erstellen Sie benötigen diesen Schlüssel und seine ID im nächsten Abschnitt.
Wenn Sie zum Senden von E-Mails an Ihre Nutzer Identity Platform verwenden, konfigurieren Sie Ihr Projekt mit dem privaten E-Mail-Relay-Dienst von Apple mithilfe der folgenden E-Mail-Adresse:
noreply@project-id.firebaseapp.com
Sie können auch eine benutzerdefinierte E-Mail-Vorlage nutzen, sofern eine solche für Ihre Anwendung vorhanden ist.
Anforderungen von Apple für anonymisierte Daten einhalten
Apple bietet Nutzern die Möglichkeit, ihre Daten, einschließlich ihrer E-Mail-Adresse, zu anonymisieren. Apple weist Nutzern, die diese Option auswählen, eine verschleierte E-Mail-Adresse mit der Domain privaterelay.appleid.com
zu.
Ihre Anwendung muss alle geltenden Entwicklerrichtlinien oder -bedingungen von Apple bezüglich anonymisierter Apple-IDs einhalten. Außerdem muss die Einwilligung des Nutzers eingeholt werden, bevor personenbezogene Daten mit einer anonymisierten Apple-ID verknüpft werden. Beispiele für Aktionen mit personenbezogenen Daten:
- E-Mail-Adresse mit einer anonymisierten Apple-ID verknüpfen und umgekehrt
- Telefonnummer mit einer anonymisierten Apple-ID verknüpfen und umgekehrt
- Nicht-anonyme Anmeldedaten für soziale Medien wie Facebook oder Google mit einer anonymisierten Apple-ID verknüpfen und umgekehrt
Weitere Informationen finden Sie in der Lizenzvereinbarung des Apple-Entwicklerprogramms für Ihr Apple-Entwicklerkonto.
Apple als Anbieter konfigurieren
So konfigurieren Sie Apple als Identitätsanbieter:
Rufen Sie in der Google Cloud Console die Seite Identitätsanbieter auf.
Klicken Sie auf Anbieter hinzufügen.
Wählen Sie in der Liste Apple aus.
Wählen Sie unter Plattform die Option Web aus.
Geben Sie Ihre Dienst-ID, Ihre Apple-Team-ID, Ihre Schlüssel-ID und Ihren privaten Schlüssel ein.
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
So melden Sie einen Nutzer an:
Erstellen Sie eine Instanz des
OAuthProvider
-Anbieterobjekts mit der IDapple.com
:Webversion 9
import { OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('apple.com');
Webversion 8
var provider = new firebase.auth.OAuthProvider('apple.com');
Optional: Fügen Sie OAuth-Bereiche hinzu. Die Bereiche legen fest, welche Daten Sie von Apple anfordern. Für sensiblere Daten sind möglicherweise spezielle Bereiche erforderlich. Wenn Ein Konto pro E-Mail-Adresse aktiviert ist, fordert Identity Platform die Bereiche
email
undname
standardmäßig an.Webversion 9
provider.addScope('email'); provider.addScope('name');
Webversion 8
provider.addScope('email'); provider.addScope('name');
Optional: Lokalisieren Sie den Authentifizierungsablauf. Sie können eine Sprache angeben oder die Standardsprache des Geräts verwenden. Eine Liste der unterstützten Sprachen finden Sie in der Dokumentation zu „Über Apple anmelden“.
Webversion 9
provider.setCustomParameters({ // Localize the Apple authentication screen in French. locale: 'fr' });
Webversion 8
provider.setCustomParameters({ // Localize the Apple authentication screen in French. locale: 'fr' });
Melden Sie den Nutzer mithilfe des Anbieterobjekts an. Sie können entweder ein Pop-up-Fenster öffnen oder die aktuelle Seite weiterleiten. Für Nutzer von Mobilgeräten ist die Weiterleitung vereinfacht.
Rufen Sie
signInWithPopup()
auf, um ein Pop-up-Fenster einzublenden:Webversion 9
import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // The signed-in user info. const user = result.user; // Apple credential const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; // 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 credential that was used. const credential = OAuthProvider.credentialFromError(error); // ... });
Webversion 8
firebase .auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // The signed-in user info. var user = result.user; // You can also get the Apple OAuth Access and ID Tokens. var accessToken = credential.accessToken; var idToken = credential.idToken; // IdP data available using getAdditionalUserInfo(result) // ... }) .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
getRedirectResult()
auf, um das Apple-Token abzurufen, wenn Ihre Seite geladen wird:Webversion 9
import { getAuth, getRedirectResult, OAuthProvider } from "firebase/auth"; // Result from Redirect auth flow. const auth = getAuth(); getRedirectResult(auth) .then((result) => { const credential = OAuthProvider.credentialFromResult(result); if (credential) { // You can also get the Apple OAuth Access and ID Tokens. const accessToken = credential.accessToken; const idToken = credential.idToken; } // The signed-in user info. const user = result.user; }) .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 credential that was used. const credential = OAuthProvider.credentialFromError(error); // ... });
Webversion 8
// Result from Redirect auth flow. firebase .auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // You can get the Apple OAuth Access and ID Tokens. var accessToken = credential.accessToken; var idToken = credential.idToken; // IdP data available in result.additionalUserInfo.profile. // ... } // The signed-in user info. var user = result.user; }) .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; // ... });
Hier können Sie auch Fehler abfangen und behandeln. Eine Liste der Fehlercodes findest du in der API-Referenz.
Im Gegensatz zu vielen anderen Identitätsanbietern stellt Apple keine Foto-URL bereit.
Wenn ein Nutzer seine reale E-Mail-Adresse nicht mit Ihrer Anwendung teilen möchte, stellt Apple eine eindeutige E-Mail-Adresse für diesen Nutzer bereit. Diese E-Mail hat das Format xyz@privaterelay.appleid.com
. Wenn Sie den privaten E-Mail-Relay-Dienst konfiguriert haben, leitet Apple alle an die anonymisierte Adresse gesendeten E-Mails an die reale E-Mail-Adresse des Nutzers weiter.
Apple gibt Nutzerinformationen wie Anzeigenamen nur dann an Anwendungen weiter, wenn sich ein Nutzer zum ersten Mal anmeldet. In den meisten Fällen werden diese Daten von Identity Platform gespeichert, damit Sie sie bei zukünftigen Sitzungen mithilfe von firebase.auth().currentUser.displayName
abrufen können. Wenn Sie Nutzern jedoch erlauben, sich mit Apple bei Ihrer Anwendung anzumelden, bevor Sie sie in Identity Platform eingebunden haben, sind keine Nutzerinformationen verfügbar.
Nächste Schritte
- Weitere Informationen zum Verknüpfen von Apple-Konten mit anderen Anbietern Apple verlangt, dass Sie die ausdrückliche Einwilligung der Nutzer einholen, bevor Sie ihre Apple-Konten mit anderen Daten verknüpfen.
- Weitere Informationen zu Identity Platform-Nutzern
- Nutzer mit anderen Identitätsanbietern anmelden