Saltare al contenuto

Apple login su Android

GitHub

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

Android utilizza attualmente una finestra di tab di Chrome per visualizzare un sito web OAuth2. Questa 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 degli sviluppatori Apple.

  2. Clicca su Identifiers.

    Sottosezione degli identificatori del Portale degli sviluppatori Apple

    Devi vedere una schermata che assomiglia a questa:

    Schermata degli identificatori del Portale degli sviluppatori 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, 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 identificatori dei servizi di navigazione
  6. Crea un nuovo identificatore

    1. Clicca sul pulsante più

      Bottone di aggiunta di nuovo ID del servizio
    2. Seleziona Servcice IDs e clicca Continue

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

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

      Conferma la registrazione dell'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. Confermate i dati e cliccate su Done

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

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

      Pulsante Salva per la configurazione del servizio
  1. Tornate 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 della 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

    Continua per la configurazione della chiave
  8. Clicca su Register

    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 il file scaricato e salvalo nella cartella backend.

    File della chiave scaricata

Per utilizzare Login with Apple su Android, devi ottenere il Team IDsarà 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 al tuo 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 avrà anche un impatto su 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ù

    Pulsante plus per l'aggiunta di un nuovo identificatore
  2. Scegli App IDs E selezionare continua

    Scegliendo il tipo di ID App
  3. Clicca sul tipo App E selezionare 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 accedere con Apple
  6. Clicca Continue

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

    Conferma i dettagli di registrazione dell'app

Se stai utilizzando Apple login 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 per i dettagli di implementazione in @capgo/capacitor-passkey @capgo/capacitor-native-biometric per i dettagli di implementazione in @capgo/capacitor-native-biometric, e Autenticazione a due fattori per i dettagli di implementazione in Autenticazione a due fattori