Saltare al contenuto

Login Apple su Android

GitHub

L'accesso Apple su Android è un po' hacky. L'Apple non offre alcun supporto ufficiale per Sign in with Apple su Android, quindi la soluzione è leggermente artificiale.

Attualmente Android utilizza un foglio di calcolo Chrome per visualizzare un sito web OAuth2. Questo approccio presenta i seguenti problemi:

  • Configurazione difficile
  • È richiesta una backend

Mi servirebbe un diagramma per spiegare il flusso su Android:

Ora che sei a conoscenza dei problemi e del flusso, iniziamo la configurazione.

  1. Accedi al Portale dello Sviluppatore Apple.

  2. Clicca su Identifiers.

    Sezione identificatori del Portale dello Sviluppatore Apple

    Devi vedere una schermata che assomiglia a questa:

    Schermata identificatori del Portale dello Sviluppatore Apple
    1. Assicurati che questo campo dica App IDs
    2. Assicurati di poter trovare il tuo ID App.
  3. Assicurati che la Sign in with Apple capacità sia abilitata per la tua app

    1. Clicca sul tuo app Selezionando la tua app dalla lista
    2. Assicurati che la Sign in with Apple capacità sia abilitata Casella di controllo per l'abilitazione della capacità Sign in with Apple
    3. Se non è abilitata, abilitala.
  4. Torna a tutti All Identifiers

    Tasto di navigazione Tutti gli Identificatori
  5. Clicca su App Ids e vai a Services IDs

    Navigazione alla sezione degli ID dei servizi
  6. Crea un nuovo identificatore

    1. Clicca sul pulsante plus

      Bottone per aggiungere un nuovo ID del servizio
    2. Seleziona Servcice IDs e clicca Continue

      Opzione per selezionare gli ID dei servizi
    3. Inserisci una descrizione e degli identificatori e clicca Continuie.

      Inserimento dei dettagli dell'ID del servizio
    4. Verifica i dettagli e clicca Register

      Confermando la registrazione dell'ID del servizio
    5. Clicca sul servizio appena creato

      Selezionare l'ID del servizio appena creato
    6. Abilita l' Sign in with Apple opzione

      Abilitazione dell'accesso con Apple per l'ID del servizio
    7. Configura il Sign In with Apple

      Pulsante di configurazione per l'accesso con Apple
    8. Assicurati che il Primary App ID sia impostato sull'ID dell'app configurato nel passaggio precedente

      Impostazione del menu a discesa dell'ID dell'app principale
    9. Aggiungi il dominio su cui ospiterai il tuo backend.

      Impostare i campi del dominio e dell'URL di ritorno
    10. Clicca su Done

      Confermando la configurazione del dominio e dell'URL di ritorno
    11. Click on Continue

      Continua la configurazione del servizio
    12. Clicca su Save

      Salva la configurazione del servizio
  1. Torna a tutti gli identificatori All Identifiers

    Tasto di navigazione per tutti gli identificatori
  2. Clicca su Keys

    Sezione delle chiavi nel portale dello sviluppatore Apple
  3. Clicca sull'icona del plus

    Crea una nuova chiave
  4. Nomi la tua chiave

    Inserisci il campo del nome della chiave
  5. Seleziona Sign in with Apple e clicca Configure

    Abilitare e configurare l'accesso con Apple per la chiave
  6. Seleziona l'ID App principale, e premi Save

    Selezionare l'ID App principale per la chiave
  7. Clicca su Continue

    Continua con il pulsante di configurazione della chiave
  8. Clicca su Register

    Clicca sul pulsante di registrazione della chiave
  9. Copia l'ID della chiave e scarica la chiave.

    Schermo per l'ID della chiave e il pulsante di download
  10. Trova la chiave scaricata e salvala nella cartella backend.

    Scaricato file di chiave

Per utilizzare Login with Apple su Android, è necessario ottenere il Team ID. Viene utilizzato nel backend.

  1. Vai a questo sito web e scorri verso il basso

  2. Trova la Team ID

    posizione dell'ID della squadra nel account del developer

Configurazione della reindirizzamento dell'app

Sezione intitolata “Configurazione del redirect dell'app”

Come hai visto nel diagramma, il backend esegue un passaggio chiamato Redirect back to the app. Ciò richiede modifiche manuali all'app.

  1. Modifica il AndroidManifest.xml
    1. Apri il file, userò AndroidStudio

      il file AndroidManifest.xml in Android Studio
    2. Trova il MainActivity e aggiungi il seguente filtro di Intent

      Filtro di Intent code da aggiungere in MainActivity
      <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="capgo-demo-app" android:host="path" />
      </intent-filter>
  2. Modifica il MainActivity
    1. Per favore apri il MainActivity

      file del MainActivity.java in Android Studio
    2. Aggiungi il seguente code:

      Code per aggiungere a MainActivity per il trattamento dei collegamenti profondi
      @Override
      protected void onNewIntent(Intent intent) {
      String action = intent.getAction();
      Uri data = intent.getData();
      if (Intent.ACTION_VIEW.equals(action) && data != null) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Apple Login Intent", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Apple Login Intent", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleAppleLoginIntent(intent);
      return;
      }
      super.onNewIntent(intent);
      }

È richiesto un backend per Android, ma configurare un backend influenzerà anche IOS. Esempio di backend fornito Ecco

Esempio che fornisce i seguenti elementi:

  • Un database JSON semplice
  • Un modo per richiedere il JWT dai server di Apple
  • Una semplice verifica del JWT

Considerando tutto ciò che ho detto in questo tutorial, ecco come env sarebbe apparso questa sezione:

  • ANDROID_SERVICE_ID = ID del servizio
  • IOS_SERVICE_ID = ID dell'applicazione
env: {
PRIVATE_KEY_FILE: "AuthKey_U93M8LBQK3.p8",
KEY_ID: "U93M8LBQK3",
TEAM_ID: "UVTJ336J2D",
ANDROID_SERVICE_ID: "ee.forgr.io.ionic.starter.service2",
IOS_SERVICE_ID: "me.wcaleniewolny.test.ionic.vue",
PORT: 3000,
REDIRECT_URI: "https://xyz.wcaleniewolny.me/login/callback",
BASE_REDIRECT_URL: "capgo-demo-app://path"
}

L'uso della login funzione non cambia, è lo stesso di IOS. Per maggiori informazioni, si prega di consultare quella sezione. TUTTAVIA, il initialize metodo cambia un po'.

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})
  1. Se non hai già un ID dell'app, clicca sul pulsante plus

    Pulsante plus per l'aggiunta di un nuovo identificatore
  2. Seleziona App IDs e clicca su continua

    Selezione del tipo di ID dell'app
  3. Clicca sul tipo App e clicca Continue

    Selezione del tipo di app
  4. Inserisci la descrizione e l'ID dell'app

    Inserisci descrizione e ID bundle dell'app
  5. Abilita Sign with Apple abilità

    Abilitazione dell'abilità di accesso con Apple
  6. Clicca Continue

    Pulsante Continua per la registrazione dell'app
  7. Conferma i dettagli e clicca Register

    Conferma i dettagli di registrazione dell'app

Se stai utilizzando Accedi con Apple su Android per pianificare l'autenticazione e i flussi di account, connettilo con Usando @capgo/capacitor-login-social per la capacità nativa in Usando @capgo/capacitor-social-login, @capgo/capacitor-social-login per il dettaglio di implementazione in @capgo/capacitor-social-login, @capgo/capacitor-passkey per il dettaglio di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-biometric-nativo per il dettaglio di implementazione in @capgo/capacitor-native-biometric, e Autenticazione a due fattori per il dettaglio di implementazione in Autenticazione a due fattori.