Nutzer mit Apple unter Android anmelden.
In diesem Dokument wird gezeigt, wie Sie mithilfe von Identity Platform Mit Apple anmelden zu Ihrer Android-Anwendung hinzufügen.
Hinweis
Erstellen Sie eine Android-App, die Identity Platform verwendet.
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.
Verwenden Sie einen privaten Schlüssel von Apple, um eine Anmeldung zu erstellen. Sie benötigen diesen Schlüssel und seine ID im nächsten Abschnitt.
Wenn Sie Identity Platform zum Senden von E-Mails an Ihre Nutzer verwenden, Ihr Projekt mit dem privaten E-Mail-Relay-Dienst von Apple konfigurieren mit folgender 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 Android 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 Android. 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
OAuthProvider
-Anbieterobjekts mit der IDapple.com
:Java
OAuthProvider.Builder provider = OAuthProvider.newBuilder("apple.com");
Kotlin
val provider = OAuthProvider.newBuilder("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.Java
List<String> scopes = new ArrayList<String>() { { add("email"); add("name"); } }; provider.setScopes(scopes);
Kotlin
provider.setScopes(arrayOf("email", "name"))
Optional: Lokalisieren Sie den Authentifizierungsablauf. Sie können eine Sprache angeben oder die Standardsprache des Geräts verwenden:
Java
// Localize the Apple authentication screen in French. provider.addCustomParameter("locale", "fr");
Kotlin
// Localize the Apple authentication screen in French. provider.addCustomParameter("locale", "fr");
Melden Sie den Nutzer mit Identity Platform an.
Mit dem Befehl
startActivityForSignInWithProvider()
können Sie prüfen, ob bereits eine Antwort vorhanden ist:Java
mAuth = FirebaseAuth.getInstance(); Task<AuthResult> pending = mAuth.getPendingAuthResult(); if (pending != null) { pending.addOnSuccessListener(new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { Log.d(TAG, "checkPending:onSuccess:" + authResult); // Get the user profile with authResult.getUser() and // authResult.getAdditionalUserInfo(), and the ID // token from Apple with authResult.getCredential(). } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "checkPending:onFailure", e); } }); } else { Log.d(TAG, "pending: null"); }
Kotlin
val pending = auth.pendingAuthResult if (pending != null) { pending.addOnSuccessListener { authResult -> Log.d(TAG, "checkPending:onSuccess:$authResult") // Get the user profile with authResult.getUser() and // authResult.getAdditionalUserInfo(), and the ID // token from Apple with authResult.getCredential(). }.addOnFailureListener { e -> Log.w(TAG, "checkPending:onFailure", e) } } else { Log.d(TAG, "pending: null") }
Bei der Anmeldung wird Ihre Aktivität im Hintergrund ausgeführt, was bedeutet, dass das System sie während des Authentifizierungsablaufs zurückrufen kann. Durch das Prüfen, ob ein Ergebnis bereits vorhanden ist, muss sich der Nutzer nicht zweimal anmelden.
Wenn kein Ergebnis vorhanden ist, rufen Sie
startActivityForSignInWithProvider()
auf:Java
mAuth.startActivityForSignInWithProvider(this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // Sign-in successful! Log.d(TAG, "activitySignIn:onSuccess:" + authResult.getUser()); FirebaseUser user = authResult.getUser(); // ... } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "activitySignIn:onFailure", e); } });
Kotlin
auth.startActivityForSignInWithProvider(this, provider.build()) .addOnSuccessListener { authResult -> // Sign-in successful! Log.d(TAG, "activitySignIn:onSuccess:${authResult.user}") val user = authResult.user // ... } .addOnFailureListener { e -> Log.w(TAG, "activitySignIn:onFailure", e) }
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 zu Identity Platform-Nutzern
- Nutzer mit anderen Identitätsanbietern anmelden