Saltare al contenuto

Apple login su Android

GitHub

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

Android utilizza attualmente un tab di Chrome per visualizzare un sito web OAuth2. Questa approccio presenta i seguenti problemi:

  • Configurazione difficile
  • È richiesta una backend

Voglio usare 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

    Dovresti 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 il Sign in with Apple sia abilitato per la tua app

    1. Clicca sul tuo app Selezionando la tua app dalla lista
    2. Assicurati che il Sign in with Apple sia abilitato Abilita la capacità di accesso Apple
    3. Se non è abilitata, abilitala.
  4. Torna indietro a tutti All Identifiers

    Tutti gli identificatori
  5. Clicca su App Ids E vai a Services IDs

    Sezione identificatori dei servizi
  6. Crea un nuovo identificatore

    1. Clicca sul pulsante più

      Aggiungi nuovo ID del servizio
    2. Scegli Servcice IDs E clicca Continue

      Selezionare l'ID del servizio
    3. Inserisci una descrizione e un identificatore e clicca Continuie.

      Inserimento dettagli ID del servizio
    4. Verifica i dettagli e clicca su Register

      Conferma registrazione ID del servizio
    5. Clicca sul servizio creato di recente

      Seleziona ID del servizio creato di recente
    6. Abilita l' Sign in with Apple opzione

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

      Configura il pulsante per accedere con Apple
    8. Assicurati che il Primary App ID sia impostato sull'ID App configurato nel passaggio precedente

      Selettore ID App principale
    9. Aggiungi il dominio su cui ospiterai il tuo backend.

      Campi dominio e URL di ritorno
    10. Confermare i dati e cliccare Done

      Conferma della configurazione dell'URL di ritorno e del dominio
    11. Cliccare su Continue

      Pulsante Continue per la configurazione del servizio
    12. Cliccare su Save

      Pulsante Salva per la configurazione del servizio
  1. Tornare a tutti All Identifiers

    Tutti gli identificatori
  2. Clicca su Keys

    Sezione chiavi nel portale dello sviluppatore Apple
  3. Clicca sull'icona più

    Aggiungi nuova chiave
  4. Nomi la tua chiave

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

    Abilitazione e configurazione di Sign in with Apple per la chiave
  6. Selezionare l'ID App principale e premere Save

    Selezione dell'ID App principale per la chiave
  7. Clicca su Continue

    Pulsante Continua per la configurazione della chiave
  8. Clicca su Register

    Pulsante Registra per la creazione 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.

    File della chiave scaricata

Per utilizzare Login with Apple su Android, è necessario ottenere il Team IDche verrà utilizzato in backend.

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

  2. Cerca la Team ID

    Posizione ID del team nel account del developer

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. Apre il file, userò AndroidStudio

      File AndroidManifest.xml in Android Studio
    2. Trova il MainActivity e aggiungi il seguente filtro di intento

      filtro di intento 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. Si prega di aprire il file MainActivity.java in Android Studio MainActivity

      Aggiungi i seguenti __CAPGO_KEEP_0__:
    2. code da aggiungere a MainActivity per gestire i collegamenti profondi

      Code to add to MainActivity for handling deep links
      @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);
      }

È richiesta una backend per Android, ma configurare un backend influenzerà anche IOS. Esempio di backend è fornito qui

Questo esempio fornisce i seguenti:

  • Un semplice database JSON
  • 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 fare env La sezione si presenterebbe così:

  • ANDROID_SERVICE_ID = ID del servizio
  • IOS_SERVICE_ID = ID dell'app
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'utilizzo della login funzione non cambia, è la stessa 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 App, clicca sul pulsante più

    Aggiungi nuovo identificatore pulsante più
  2. Seleziona App IDs e clicca continua

    Selezionare il tipo di ID App
  3. Clicca sul tipo App e clicca Continue

    Selezionare il tipo di App
  4. Inserisci la descrizione e l'ID dell'app

    Inserire la descrizione dell'app e l'ID del bundle
  5. Abilita Sign with Apple abilità

    Abilitazione della capacità di accesso con Apple
  6. Clicca Continue

    Continua il pulsante di registrazione dell'app
  7. Conferma i dettagli e clicca Register

    Conferma i dettagli di registrazione dell'app

Se stai utilizzando Login Apple su Android per pianificare l'autenticazione e le flussi di account, connettilo con Utilizza @capgo/capacitor-social-login Per la capacità nativa in Utilizza @capgo/capacitor-social-login, @capgo/capacitor-social-login Per il dettaglio di implementazione in @capgo/capacitor-social-login, @capgo/capacitor-passkey for the implementation detail in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric for the implementation detail in @capgo/capacitor-native-biometric, and Autenticazione a due fattori per i dettagli di implementazione in Autenticazione a due fattori.