Saltare al contenuto

Accedi con Apple su Android

GitHub

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

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

    Sezione Identificatori del Portale degli sviluppatori Apple

    Dovresti vedere una schermata che assomiglia a questa:

    Schermata dei 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 capacità sia abilitata per la tua app

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

    Tasto di navigazione per tutti gli identificatori
  5. Clicca su App Ids e vai a Services IDs

    Navigazione alla sezione degli ID dei servizi
  6. Crea un nuovo identificatore

    1. Clicca sul pulsante plus

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

      Seleziona opzione degli 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 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 è impostato sull'ID App configurato nel passaggio precedente

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

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

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

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

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

    Tasto di navigazione per tutti gli identificatori
  2. Cliccare su Keys

    Sezione delle 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

    Seleziona l'ID dell'app principale per la chiave
  7. Clicca su Continue

    Continua per la configurazione della chiave
  8. Clicca su Register

    Registra la chiave 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 della chiave scaricato e salvalo nella cartella backend.

    File della chiave scaricato

Per utilizzare Login with Apple su Android, è necessario ottenere il Team IDVerrà utilizzato nel backend.

  1. Vai a questo sito web Esegui lo scroll verso il basso

  2. Trovare il Team ID

    L'ubicazione dell'ID del team nel conto utente sviluppatore

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. Trovare il MainActivity e aggiungi il seguente filtro di intento

      Configura il filtro di intento code per aggiungerlo 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. Per favore apri 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 configurare una backend influenzerà anche IOS. Esempio di backend è fornito Esempio

Esempio di backend fornito qui sopra fornisce i seguenti elementi:

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

Considerando tutto ciò che ho detto in questo tutorial, ecco come sarebbe la env sezione:

  • ANDROID_SERVICE_ID = ID del servizio
  • IOS_SERVICE_ID = ID dell'applicazione
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 La 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 dell'applicazione, clicca sul pulsante plus

    Pulsante plus per l'aggiunta di un nuovo identificatore
  2. Scegli App IDs e clicca su continua

    Selezionare il tipo di ID dell'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 bundle
  5. Abilita Sign with Apple abilità

    Abilitazione dell'abilità di accesso con Apple
  6. Clicca Continue

    Pulsante Continua per la 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-passkey per il dettaglio di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-autenticazione-biometrica-nativa per i dettagli di implementazione in @capgo/capacitor-autenticazione-biometrica-nativa, e Autenticazione a due fattori per i dettagli di implementazione in Autenticazione a due fattori.