Saltare al contenuto

Accedi con Apple su Android

GitHub

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

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

  • Configurazione difficile
  • È richiesta una backend

Mi spiego meglio con un diagramma per spiegare il flusso su Android:

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

  1. Accedete al Portale degli sviluppatori Apple.

  2. Cliccate su Identifiers.

    Sezione Identificatori del Portale degli sviluppatori Apple

    Deve apparire una schermata che assomiglia a questa:

    Schermata Identificatori del Portale degli sviluppatori Apple
    1. Assicuratevi che questo campo dica App IDs
    2. Assicuratevi di poter trovare il vostro 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 La capacità è abilitata Abilita la possibilità di accedere con Apple
    3. Se non è abilitato, abilitalo.
  4. Torna indietro a tutti All Identifiers

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

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

    1. Clicca sul pulsante più

      Aggiungi nuovo ID del servizio
    2. Seleziona Servcice IDs e clicca Continue

      Seleziona opzione ID dei servizi
    3. Inserisci una descrizione e gli identificatori e clicca Continuie.

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

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

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

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

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

      Selettore di impostazione dell'ID App principale
    9. Aggiungi il dominio su cui ospiterai il tuo backend.

      Impostare i campi del dominio e dell'URL di ritorno
    10. Confermare i dati e cliccare Done

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

      Continua con il pulsante di configurazione del servizio
    12. Clicca su Save

      Salva il pulsante di configurazione del servizio
  1. Torna indietro a tutti All Identifiers

    Pulsante di navigazione Tutti gli Identificatori
  2. Clicca su Keys

    Sezione chiavi nel Portale dello Sviluppatore Apple
  3. Clicca sull'icona del plus

    Aggiungi nuova chiave
  4. Nomi la tua chiave

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

    Abilita e configura l'accesso con Apple per la chiave
  6. Seleziona l'ID App principale e premi Save

    Scegliere l'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 ID chiave e 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 scorrere verso il basso

  2. Trova la Team ID

    posizione dell'ID del team nell'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 la MainActivity e aggiungi il seguente filtro di intent

      Filtra 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 MainActivity

      Il file MainActivity.java in Android Studio
    2. Aggiungi i seguenti code:

      Code da aggiungere a MainActivity per gestire i 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);
      }

È richiesta una backend per Android, ma la configurazione di una backend influenzerà anche IOS. Esempio di backend fornito here

Questo esempio fornisce i seguenti:

  • Una 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 sarebbe la env La sezione sarebbe così:

  • ANDROID_SERVICE_ID = ID del servizio
  • IOS_SERVICE_ID = ID 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 più per l'aggiunta di un nuovo identificatore
  2. Scegli App IDs e clicca su 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

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

    Abilitare la capacità di accedere con Apple
  6. Clicca Continue

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

    Confermando i dettagli di registrazione dell'app

Se stai utilizzando Apple login su Android per pianificare l'autenticazione e le flussi di account, connettilo con Utilizzando @capgo/capacitor-login-social per la capacità nativa in Utilizzando @capgo/capacitor-login-social @capgo/capacitor-login-social per il dettaglio di implementazione in @capgo/capacitor-login-social @capgo/capacitor-chiave di accesso per il dettaglio di implementazione in @capgo/capacitor-passkey @capgo/capacitor-autenticazione-biometrica 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.