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.

Hinweise

Anwendung mit Apple konfigurieren

Auf der Website für Apple-Entwickler:

  1. Führen Sie die Schritte unter Mit Apple im Web anmelden aus. Dazu zählen:

    1. Registrieren Sie eine Return-URL wie beispielsweise die folgende:

      https://project-id.firebaseapp.com/__/auth/handler
      
    2. 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.

  2. Verwenden Sie zum Erstellen einer Anmeldung einen privaten Apple-Schlüssel. Sie benötigen diesen Schlüssel und seine ID im nächsten Abschnitt.

  3. Wenn Sie die Identity Platform zum Senden von E-Mails an Ihre Nutzer 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:

  1. Rufen Sie in der Google Cloud Console die Seite Identitätsanbieter auf.

    Zur Seite „Identitätsanbieter“

  2. Klicken Sie auf Anbieter hinzufügen.

  3. Wählen Sie in der Liste Apple aus.

  4. Wählen Sie unter Plattform die Option Android aus.

  5. Geben Sie Ihre Dienst-ID, Ihre Apple-Team-ID, Ihre Schlüssel-ID und Ihren privaten Schlüssel ein.

  6. 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.

  7. Klicken Sie unter Anwendung konfigurieren auf Android. Kopieren Sie das Snippet in den Code Ihrer Anwendung, um das Identity Platform Client SDK zu initialisieren.

  8. Klicken Sie auf Speichern.

Nutzer mit dem Client SDK anmelden

  1. Erstellen Sie eine Instanz des OAuthProvider-Anbieterobjekts mit der ID apple.com:

    Java

    OAuthProvider.Builder provider = OAuthProvider.newBuilder("apple.com");
    

    Kotlin

    val provider = OAuthProvider.newBuilder("apple.com")
    
  2. 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 und name standardmäßig an.

    Java

    List<String> scopes =
        new ArrayList<String>() {
          {
            add("email");
            add("name");
          }
        };
    provider.setScopes(scopes);
    

    Kotlin

    provider.setScopes(arrayOf("email", "name"))
    
  3. 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");
    
  4. Melden Sie den Nutzer mit Identity Platform an.

    1. 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.

    2. 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