Saltare al contenuto

Apple login su Android

GitHub

La registrazione Apple su Android è un po' hacky. Apple non offre alcun supporto ufficiale per Sign in with Apple La soluzione è leggermente hacky poiché

Attualmente Android utilizza una finestra di tab di Chrome per visualizzare un sito web OAuth2. Questo approccio presenta i seguenti problemi:

  • Configurazione difficile
  • È richiesta una backend

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

    Sottosezione degli identificatori del Portale dello sviluppatore Apple

    Devi vedere una schermata che assomiglia a questa:

    Schermata degli 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 abilitato per la tua app

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

    Tutti gli identificatori pulsante di navigazione
  5. Clicca su App Ids e vai a Services IDs

    Sezione di navigazione agli ID dei servizi
  6. Crea un nuovo identificatore

    1. Clicca sul pulsante plus

      Pulsante di aggiunta nuovo ID del servizio
    2. Scegli Servcice IDs e clicca Continue

      Scegliendo l'ID del servizio
    3. Inserisci una descrizione e gli identificatori e clicca Continuie.

      Inserendo dettagli dell'ID del servizio
    4. Verifica i dettagli e clicca su Register

      Conferma registrazione ID del servizio
    5. Clicca sul servizio ID appena creato

      Seleziona il nuovo ID del servizio
    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 su 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 del plus

    Bottone aggiungi nuova chiave
  4. Nomi la tua chiave

    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. Schermo per la copia dell'ID della chiave e il download della chiave

    ID della chiave e pulsante di download
  10. Trova la chiave scaricata e salvala nella cartella backend.

    File della chiave scaricata

Per utilizzare Login with Apple su Android, devi 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 dell'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 Intent filter

      Intent filter 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);
      }

È richiesto un backend per Android, ma configurare un backend avrà anche un impatto su IOS. Esempio di backend è fornito Ecco 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 sarebbe 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. Scegli App IDs e clicca su continua

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

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

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

    Abilitando la capacità di accesso con Apple
  6. Clicca Continue

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

    Conferma i dettagli di registrazione dell'app

Se stai utilizzando L'accesso 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.