Autenticazione per GDK Glassware

Se il tuo GDK Glassware deve autenticare gli utenti rispetto a un servizio web, il GDK fornisce un'API che consente all'utente di inserire le proprie credenziali installare i tuoi Glassware.

Se utilizzi questa API, fornisci un'istanza per gli utenti di Glass ed evitare l'onere di implementare i propri schemi di autenticazione personalizzati.

Creazione di un account di servizio API di Google

Se l'autenticazione è configurata correttamente, il backend dell'app web utilizza l'API Mirror per eseguire il push degli utenti i dati dell'account a Glass dopo l'autenticazione con il tuo servizio.

Per accedere a questa API, crea un progetto API di Google e poi Creare un ID client per un "account di servizio" (e non un'"applicazione web"). Di utilizzando un account di servizio, gli utenti non devono concedere separatamente l'autorizzazione dell'applicazione per eseguire il push delle proprie credenziali a Glass visualizzare sia la pagina delle autorizzazioni OAuth che la tua pagina di nuovo.

Per creare questo account:

  1. Vai a Google Developers Console.
  2. Fai clic sul pulsante Crea progetto e inserisci le informazioni richieste.
  3. Una volta creato il progetto, prendi nota del numero di progetto, che che ti servirà in un secondo momento.
  4. Nella sezione API e auth, fai clic su API e abilita l'API Google Mirror per il tuo nuovo progetto.
  5. Nella sezione API e auth, fai clic su Credenziali, quindi su Crea nuovo client ID. Seleziona la casella Account di servizio per creare un nuovo OAuth 2.0 per il progetto.
  6. Una finestra popup ti informerà che la chiave privata è in fase di download al computer e ti fornisce la password della chiave privata. Se chiudi questa finestra, non potrai scaricare questo file privato chiave o di visualizzare di nuovo la password. Se dovesse andare persa, dovrai creare un nuovo uno.
  7. Prendi nota dell'indirizzo email dell'account di servizio, che ti servirà in un secondo momento per effettuare la chiamata API.

Fornire metadati su Glassware

Quando è tutto pronto per inviare i tuoi articoli in vetro, dovrai fornire i seguenti dati le seguenti informazioni. Questo ci consente di configurare i tuoi Glassware per correttamente l'autenticazione quando la implementi.

  • L'URL di autenticazione, a cui gli utenti vengono reindirizzati quando accendono gli oggetti Glassware in MyGlass.
  • Il tipo di account (la stringa che userai quando richiami il metodo API Android AccountManager sul dispositivo Glass)
  • Il nome del pacchetto dell'applicazione da AndroidManifest.xml
  • L'ID numerico del progetto dell'API di Google del progetto che hai creato. superiori a
  • L'APK da caricare su MyGlass. Per i test, devi solo fornire questo APK per gestire il download iniziale quando il tuo Glassware attivata da MyGlass; dopodiché puoi eseguire l'iterazione e il debug localmente sovrascrivendo l'APK sul tuo dispositivo. Tieni presente che questo APK deve soddisfare i seguenti criteri:
    • Deve essere allineato al file zip.
    • Non devi apportare modifiche al nome del pacchetto o alla firma privata dopo questa (il gestore di pacchetti Android non consente se una di queste modifiche si verifica).
    • Deve essere inferiore a 50 MB.
    • Deve essere compilato utilizzando la versione più recente di GDK.

Implementazione del flusso di autenticazione

Il seguente diagramma mostra il flusso di autenticazione di base per GDK Glassware:

Per implementare il flusso di autenticazione:

  1. Quando gli utenti attivano i tuoi Glassware in MyGlass, vengono reindirizzati all'URL di autenticazione. Queste richieste includono un parametro di query denominato userToken che dovrai usare in un secondo momento.

  2. L'utente inserisce le proprie credenziali nella pagina di autenticazione.

  3. Il server convalida le credenziali dell'utente. Se le credenziali sono valide, effettua una chiamata API Mirror al metodo mirror.accounts.insert. Questo metodo richiede di specificare https://www.googleapis.com/auth/glass.thirdpartyauth l'ambito quando crei Mirroring dell'oggetto di servizio. Esempi di esecuzione di questa chiamata API utilizzando i dati non elaborati HTTP o Java sono mostrati negli esempi di creazione di account.

    I parametri e il corpo della richiesta che fornisci di seguito rappresentano gli stessi informazioni che forniresti a AccountManager di Android se creavano l'account direttamente sul dispositivo.

    Nome proprietà Valore Descrizione
    features[] elenco di stringhe Un elenco di funzionalità (vedi AccountManager.hasFeatures).
    password stringa La password dell'account (vedi AccountManager.getPassword). I nostri suggerimenti di non archiviare la password effettiva dell'utente questo campo, ma lo utilizzerai per archiviare dati come un token di aggiornamento.
    userData[] elenco di oggetti Una o più coppie di dati utente associate all'account (vedi AccountManager.getUserData).
    userData[].key stringa La chiave associata a una determinata coppia chiave-valore di dati utente .
    userData[].value stringa Il valore associato a una determinata coppia chiave-valore di dati utente .
    authTokens[] elenco di oggetti Uno o più token di autenticazione associati all'account (vedi AccountManager.getAuthToken).
    authTokens[].type stringa Il tipo di token di autenticazione.
    authTokens[].authToken stringa Il token di autenticazione.
  4. Dopo aver ricevuto la richiesta mirror.account.insert, l'API Mirror esegue il push l'account al dispositivo o ai dispositivi Glass dell'utente, dove ora potrai accedervi utilizzando la classe AccountManager.

Segui queste linee guida per implementare un flusso di autenticazione facile da usare:

  • Ottimizza il flusso per i dispositivi mobili.
  • Se il flusso ha un ambito e l'utente li annulla, chiedi di creare una bozza ben progettata .
  • Assicurati che gli ambiti richiesti vengano effettivamente utilizzati in Glassware.
  • Se un account utente può essere collegato, assicurati di collegarlo.
  • Ove possibile, il backup dei dati utente deve essere eseguito sul cloud.
di Gemini Advanced.

Per mantenere la coerenza nell'autenticazione Glassware, utilizza una delle seguenti opzioni dei flussi di autenticazione:

Mirroring o ibrido senza account

  1. Dopo l'attivazione in MyGlass, l'URL di autenticazione si aprirà in un popup.
  2. Questo invia direttamente l'utente agli ambiti da accettare.
  3. Dopo che l'utente accetta o annulla gli ambiti, chiudi il popup.

Mirroring con un account

  1. Dopo l'attivazione in MyGlass, l'URL di autenticazione si aprirà in un popup.
    • Se l'utente ha già effettuato l'accesso al tuo servizio, invialo direttamente agli ambiti.
    • Se l'utente non ha eseguito l'accesso, mostra i campi di accesso e consentigli di accedere al tuo servizio e poi inviarli agli ambiti.
    • Se l'utente non dispone di un account, fornisci un link per creare un . Gli utenti devono disporre di un modo per creare un account nell'ambito del il processo del flusso di installazione.
  2. L'utente accetta gli ambiti.
    • Se il tuo Glassware dispone di impostazioni configurabili, indirizza l'utente al della pagina delle impostazioni con valori predefiniti ragionevoli.
    • Se il tuo Glassware non dispone di impostazioni configurabili, indirizza l'utente a una pagina di conferma. Chiudi il popup se non sono presenti configurazioni aggiuntive obbligatorio.

Ibrido con un account

  1. Dopo l'attivazione in MyGlass, l'URL di autenticazione si aprirà in un popup.
    • Se l'utente ha già effettuato l'accesso al tuo servizio, invialo direttamente agli ambiti.
    • Se l'utente non ha eseguito l'accesso, mostra i campi di accesso e consentigli di accedere e poi inviarli agli ambiti.
    • Se l'utente non dispone di un account, fornisci un link per crearne uno.
  2. L'utente accetta gli ambiti.
  3. Invia una richiesta all'API Mirror per inserire l'account GDK.
    • Indirizza l'utente alla pagina delle impostazioni con valori predefiniti ragionevoli selezionati.
    • Invia all'utente una pagina di conferma. Chiudi il popup se non sono presenti configurazione obbligatoria.

Mirroring o ibrido con ambiti personalizzati e account

  1. Dopo l'attivazione in MyGlass, l'URL di autenticazione si aprirà in un popup.
    • Se l'utente ha già effettuato l'accesso al tuo servizio, indirizzalo al tuo ambiti interni
    • Se l'utente non ha eseguito l'accesso, mostra i campi di accesso e consentigli di accedere e poi inviarli agli ambiti interni
    • Se l'utente non dispone di un account, fornisci un link per crearne uno.
  2. Quando l'utente accetta i tuoi ambiti personalizzati, indirizzalo agli ambiti di Google.
  3. Invia una richiesta all'API Mirror per inserire l'account GDK.
    • Indirizza l'utente alla pagina delle impostazioni con valori predefiniti ragionevoli selezionati.
    • Invia all'utente una pagina di conferma. Chiudi il popup se non sono presenti configurazione obbligatoria.

Mirroring o ibrido con app per Android/iPhone

  1. Dopo l'attivazione in MyGlass, l'URL di autenticazione si aprirà in un popup.
  2. Questo invia direttamente l'utente agli ambiti da accettare.
  3. Dopo che l'utente accetta gli ambiti:
    • Se l'utente ha l'app complementare ed è autenticato, chiudi il popup finestra.
    • In caso contrario, indirizza l'utente a un annuncio interstitial che lo invita a scaricare dal Google Play Store o dallo store iOS
  4. Dopo aver installato l'app e eseguito l'autenticazione, chiudi la finestra popup.

GDK e nessun account

Per questo flusso è sufficiente attivare Glassware in MyGlass.

GDK con un account

  1. Dopo l'attivazione in MyGlass, l'URL di autenticazione si aprirà in un popup.
    • Se l'utente ha già effettuato l'accesso al tuo servizio, indirizzalo alla schermata di conferma.
    • Se l'utente non ha eseguito l'accesso, visualizza i campi di accesso e consenti di accedere e inviare il messaggio alla schermata di conferma.
    • Se l'utente non dispone di un account, fornisci un link per crearne uno.
  2. L'utente accetta gli ambiti.
  3. Invia una richiesta all'API Mirror per inserire l'account GDK.
  4. Mostra la schermata di conferma e chiudila dopo averla mostrata per un per un breve periodo di tempo.

Esempi per la creazione di account

Utilizzare le librerie client per l'API Mirror quando possibile. In questo modo, puoi chiamare mirror.accounts.insert per creare l'account più facilmente.

Esempio di HTTP non elaborato

L'esempio seguente mostra solo l'URL della richiesta e un esempio del corpo JSON previsto. Esecuzione di richieste HTTP non elaborate per conto di un servizio account è molto più complicato (vedi Utilizzo di OAuth 2.0 per applicazioni server-server per informazioni dettagliate), ti consigliamo quindi di utilizzare una delle nostre API di Google librerie client se possibile, per semplificare l'operazione.

Metodo di richiesta e URL:

POST https://www.googleapis.com/mirror/v1/accounts/{userToken}/com.example.myapp/username%40email.com

Corpo della richiesta:

{
    "features": ["a", "b", "c"],
    "userData": [
        { "key": "realName", "value": "Rusty Shackleford" },
        { "key": "foo", "value": "bar" }
    ],
    "authTokens": [
        { "type": "your_token_type", "authToken": "zT419Ma3X2pBr0L..." }
    ]
}

Sostituisci {userToken} nell'URL della richiesta con il token che è stato trasmesso a l'URL di autenticazione nel passaggio 1 della Implementazione del flusso di autenticazione.

Esempio Java

Questo esempio mostra come utilizzare la libreria client Java per chiamare mirror.accounts.insert

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.Account;
import com.google.api.services.mirror.model.AuthToken;
import com.google.common.collect.Lists;
...

/** Email of the Service Account */
private static final String SERVICE_ACCOUNT_EMAIL =
    "<some-id>@developer.gserviceaccount.com";

/** Path to the Service Account's Private Key file */
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH =
    "/path/to/<public_key_fingerprint>-privatekey.p12";

/** The account type, usually based on your company or app's package. */
private static final String ACCOUNT_TYPE = "com.example.myapp";

/** The Mirror API scopes needed to access the API. */
private static final String MIRROR_ACCOUNT_SCOPES =
    "https://www.googleapis.com/auth/glass.thirdpartyauth";

/**
 * Build and returns a Mirror service object authorized with the service accounts.
 *
 * @return Mirror service object that is ready to make requests.
 */
public static Mirror getMirrorService() throws GeneralSecurityException,
    IOException, URISyntaxException {
  HttpTransport httpTransport = new NetHttpTransport();
  JacksonFactory jsonFactory = new JacksonFactory();
  GoogleCredential credential = new GoogleCredential.Builder()
      .setTransport(httpTransport)
      .setJsonFactory(jsonFactory)
      .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
      .setServiceAccountScopes(MIRROR_ACCOUNT_SCOPES)
      .setServiceAccountPrivateKeyFromP12File(
          new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
      .build();
  Mirror service = new Mirror.Builder(httpTransport, jsonFactory, null)
      .setHttpRequestInitializer(credential).build();
  return service;
}

/**
 * Creates an account and causes it to be synced up with the user's Glass.
 * This example only supports one auth token; modify it if you need to add
 * more than one, or to add features, user data, or the password field.
 *
 * @param mirror the service returned by getMirrorService()
 * @param userToken the user token sent to your auth callback URL
 * @param accountName the account name for this particular user
 * @param authTokenType the type of the auth token (chosen by you)
 * @param authToken the auth token
 */
public static void createAccount(Mirror mirror, String userToken, String accountName,
    String authTokenType, String authToken) {
  try {
    Account account = new Account();
    List<AuthToken> authTokens = Lists.newArrayList(
        new AuthToken().setType(authTokenType).setAuthToken(authToken));
    account.setAuthTokens(authTokens);
    mirror.accounts().insert(
        userToken, ACCOUNT_TYPE, accountName, account).execute();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

Recupero di account su Glass

Recupero e utilizzo di Account su Glass è simile all'utilizzo standard AccountManager.

  1. Dichiara le seguenti autorizzazioni per i manifest nel tuo file AndroidManifest.xml:

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    
  2. Recupera gli account Glassware:

    AccountManager accountManager = AccountManager.get(mContext);
    // Use your Glassware's account type.
    Account[] accounts = accountManager.getAccountsByType("com.example");
    
    // Pick an account from the list of returned accounts.
    
  3. Recupera un token di autenticazione da Account:

    // Your auth token type.
    final String AUTH_TOKEN_TYPE = "oauth2:https://www.example.com/auth/login";
    
    accountManager.getAuthToken(account, AUTH_TOKEN_TYPE, null, activity, new AccountManagerCallback<Bundle>() {
        public void run(AccountManagerFuture<Bundle> future) {
            try {
                String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN);
                // Use the token.
            } catch (Exception e) {
                // Handle exception.
            }
        }
    }, null);