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 La soluzione è leggermente furbesca.

Android utilizza attualmente un tab 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 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 possibilità di accedere con Apple
    3. Se non è abilitata, abbilitala.
  4. Torna indietro a tutti All Identifiers

    Tutti gli identificatori 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 più

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

      Selezionare l'ID del servizio
    3. Inserisci una descrizione e degli identificatori 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

      Scegli l'ID del servizio appena creato
    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 del dominio e dell'URL di ritorno
    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

    Menu identificatori
  2. Clicca su Keys

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

    Bottone aggiungi nuova chiave
  4. Dai un nome alla chiave

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

    Abilitare e configurare l'accesso con Apple per la chiave
  6. Selezionare l'ID App principale e premere Save

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

    Pulsante di continuazione per la configurazione della chiave
  8. Clicca su Register

    Pulsante di registrazione 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. Trova 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 appQuesto 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 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);
      }

È richiesto un backend per Android, ma configurare un backend influenzerà anche l'IOS. Esempio di backend è fornito qui

Ecco un esempio che fornisce i seguenti:

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

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 bundle
  5. Abilita Sign with Apple abilità

    Abilitando la capacità di accedere 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 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.