Saltare al contenuto

Login Apple su Android

GitHub

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

Attualmente Android utilizza un tab chrome per visualizzare un sito web OAuth2. Questa approccio presenta i seguenti problemi:

  • Configurazione difficile
  • È richiesta una backend

Usare un diagramma per spiegare il flusso su Android:

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

  1. Accedi al Portale dello Sviluppatore Apple.

  2. Clicca su Identifiers.

    Sezione identificatori del Portale dello Sviluppatore Apple

    Dovresti vedere una schermata che assomiglia a questa:

    Schermata 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 la 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 la Sign in with Apple capacità sia abilitata Casella di controllo per l'abilitazione della capacità Apple Sign in
    3. Se non è abilitata, abilitala.
  4. Torna a tutti All Identifiers

    Tasto di navigazione 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

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

      Seleziona l'opzione degli ID dei servizi
    3. Inserisci una descrizione e degli identificatori e clicca Continuie.

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

      Confermando registrazione ID servizio
    5. Clicca sul servizio appena creato

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

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

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

      Impostazione del menu a discesa ID App principale
    9. Aggiungi il dominio su cui ospiterai il tuo backend.

      Impostare i campi di dominio e URL di ritorno
    10. Confermando la configurazione del dominio e dell'URL di ritorno Done

      Clicca su
    11. __CAPGO_KEEP_0__ Continue

      Continua il pulsante per la configurazione del servizio
    12. Clicca su Save

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

    Pulsante di navigazione per tutti gli identificatori
  2. Clicca su Keys

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

    Pulsante per aggiungere una nuova chiave
  4. Nomi la tua chiave

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

    Abilitare e configurare l'accesso con Apple per la chiave
  6. Seleziona l'ID App principale, e premi Save

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

    Continua con il pulsante 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 chiave scaricato

Per utilizzare Login with Apple su Android, è necessario ottenere il Team ID. Viene utilizzato nel 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 app. Ciò 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 intent

      Filtro di intent 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. Per favore apri il MainActivity

      file del MainActivity.java in Android Studio
    2. Aggiungi il seguente code:

      Code per aggiungere a MainActivity per il trattamento dei 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);
      }

È richiesto un backend per Android, ma configurare un backend influenzerà anche IOS. Esempio di backend fornito Ecco

Questo esempio fornisce i seguenti elementi:

  • Un database JSON semplice
  • 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 env questa sezione sarebbe stata formattata:

  • 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'uso della login funzione non cambia, è lo stesso 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'app, clicca sul pulsante plus

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

    Selezionando il tipo di ID dell'app
  3. Clicca sul tipo App e clicca Continue

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

    Inserisci descrizione e ID bundle dell'app
  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

    Conferma i dettagli di registrazione dell'app

Se stai utilizzando Accesso Apple su Android per pianificare l'autenticazione e le flussi di account, connettilo con Utilizza @capgo/capacitor-login-social per la capacità nativa in Utilizza @capgo/capacitor-login-social Utilizza @capgo/capacitor-login-social per il dettaglio di implementazione in @capgo/capacitor-login-social Utilizza @capgo/capacitor-passkey per il dettaglio di implementazione in @capgo/capacitor-passkey Utilizza @capgo/capacitor-biometrica-nativa per il dettaglio di implementazione in @capgo/capacitor-biometrica-nativa, e Autenticazione a due fattori per il dettaglio di implementazione in Autenticazione a due fattori