Uwierzytelnianie w przypadku oprogramowania GDK Glassware

Jeśli oprogramowanie szklane GDK wymaga uwierzytelniania użytkowników w usłudze internetowej, GDK udostępnia interfejs API, który umożliwia użytkownikowi wpisanie danych logowania zainstalować Glassware.

Korzystając z tego interfejsu API, przekazujesz użytkownikom użytkowników Google Glass i uniknąć żmudnego wdrażania niestandardowe schematy uwierzytelniania.

Tworzę konto usługi interfejsów API Google

Jeśli uwierzytelnianie jest skonfigurowane prawidłowo, backend aplikacji internetowej za pomocą interfejsu Mirror API informacji o koncie do Google Glass po uwierzytelnieniu użytkownika w usłudze.

Aby uzyskać dostęp do tego interfejsu API, utwórz projekt interfejsu API Google, a następnie Utworzyć identyfikator klienta dla „konta usługi” (a nie „aplikacja internetowa”). Według za pomocą konta usługi, użytkownicy nie muszą oddzielnie przyznawać dostępu do Google Glass i nie będzie może wyświetlać się zarówno na stronie uprawnień OAuth, jak i w swojej witrynie jeszcze raz.

Aby utworzyć to konto:

  1. Otwórz Google Developers Console.
  2. Kliknij przycisk Utwórz projekt i wpisz wymagane informacje.
  3. Po utworzeniu projektu zanotuj numer projektu, które będą potrzebne później.
  4. W sekcji Interfejsy API i auth, kliknij APIs (Interfejsy API) i włącz Google Mirror API. do swojego nowego projektu.
  5. W sekcji Interfejsy API i auth, kliknij Credentials (Dane logowania), a następnie Create New Client (Utwórz nowego klienta) Identyfikator. Zaznacz pole Konto usługi, aby utworzyć nowy protokół OAuth 2.0 identyfikator klienta projektu.
  6. Pojawi się wyskakujące okienko z informacją, że trwa pobieranie klucza prywatnego. i udostępni hasło do tego klucza prywatnego. Po zamknięciu tego okna nie będzie można pobrać tego prywatnego lub jeszcze raz zobaczyć hasło. Jeśli kiedykolwiek zostaną utracone, musisz utworzyć nowe jeden.
  7. Zapisz adres e-mail konta usługi, który będzie Ci potrzebny. w celu wywołania interfejsu API.

Udostępnianie metadanych oprogramowania Glassware

Przed przesłaniem oprogramowania Glassware należy podać poniższych informacji. Dzięki temu możemy skonfigurować Glassware podczas wdrażania.

  • adres URL uwierzytelniania, na który użytkownicy są przekierowywani, włączają oprogramowanie Glassware w MyGlass.
  • Typ konta (ciąg znaków, który będzie używany podczas wywoływania funkcji interfejsów API Androida AccountManager na urządzeniu Glass)
  • Nazwa pakietu aplikacji z AndroidManifest.xml
  • numeryczny identyfikator projektu Google API; powyżej
  • APK do przesłania do MyGlass. Aby przeprowadzić test, wystarczy podać ten plik APK, by obsłużyć wstępne pobieranie, gdy aplikacja Google Glass włączono w MyGlass; Następnie możesz lokalnie iterować i debugować przez zastąpienie pakietu APK na urządzeniu. Pamiętaj, że ten plik APK musi spełniać następujące kryteria:
    • Musi być wyrównany do pliku ZIP.
    • Nie możesz zmieniać nazwy pakietu ani podpisu prywatnego (Menedżer pakietów Android nie pozwala na uaktualnienia jeśli któraś z tych zmian się zmieni).
    • Rozmiar nie może przekraczać 50 MB.
    • Musi być skompilowana z użyciem najnowszej wersji GDK.

Wdrażanie procesu uwierzytelniania

Poniższy diagram przedstawia przepływ podstawowego uwierzytelniania dla Artykuły szklane GDK:

Aby wdrożyć proces uwierzytelniania:

  1. Gdy użytkownik włączy oprogramowanie Glassware w MyGlass, zostanie przekierowany do adresu URL uwierzytelniania. Te żądania zawierają parametr zapytania o nazwie userToken, których będziesz potrzebować później.

  2. Użytkownik wpisuje swoje dane logowania na stronie uwierzytelniania.

  3. Serwer weryfikuje dane użytkownika. Jeśli dane logowania są prawidłowe, wywołać metodę mirror.accounts.insert interfejsu Mirror API. Ta metoda wymaga określenia https://www.googleapis.com/auth/glass.thirdpartyauth zakres podczas tworzenia Powiel obiekt usługi. Przykłady wywołań interfejsu API z użyciem nieprzetworzonego kodu W przykładach tworzenia kont podano protokoły HTTP i Java.

    Parametry i treść żądania podane poniżej są takie same informacje, które można podać firmie AccountManager Androida, jeśli było tworzone konto bezpośrednio na urządzeniu.

    Nazwa usługi Wartość Opis
    features[] lista ciągów Lista funkcji (zobacz AccountManager.hasFeatures).
    password ciąg znaków Hasło do konta (patrz AccountManager.getPassword). Zalecamy w których nie przechowujesz rzeczywistego hasła użytkownika w tym polu, ale używaj go do przechowywania prywatnych danych o długiej wartości takie jak token odświeżania.
    userData[] lista obiektów Co najmniej jedna para danych użytkownika powiązana z kontem (patrz sekcja AccountManager.getUserData).
    userData[].key ciąg znaków Klucz powiązany z konkretną parą klucz-wartość danych użytkownika parować.
    userData[].value ciąg znaków Wartość powiązana z konkretną parą klucz-wartość danych użytkownika parować.
    authTokens[] lista obiektów Co najmniej 1 token uwierzytelniania powiązany z kontem (patrz sekcja AccountManager.getAuthToken).
    authTokens[].type ciąg znaków Typ tokena uwierzytelniania.
    authTokens[].authToken ciąg znaków Token uwierzytelniania.
  4. Po otrzymaniu żądania mirror.account.insert interfejs Mirror API przekazuje na urządzeniu Google Glass użytkownika, gdzie masz do niego dostęp za pomocą klasy AccountManager.

Aby wdrożyć proces uwierzytelniania łatwych w użyciu, postępuj zgodnie z tymi wytycznymi:

  • Zoptymalizuj proces aplikacji pod kątem urządzeń mobilnych.
  • Jeśli przepływ ma zakres, a użytkownik go anuluje, należy dobrze zaplanować .
  • Upewnij się, że żądane zakresy rzeczywiście są używane w oprogramowaniu Glassware.
  • Jeśli konto użytkownika można połączyć, upewnij się, że jest ono połączone.
  • W miarę możliwości należy tworzyć kopie zapasowe danych użytkowników w chmurze.
.

Aby zachować spójność uwierzytelniania Glassware, użyj jednej z tych procesy uwierzytelniania:

Wersje lustrzane lub hybrydowe bez konta

  1. Po włączeniu w MyGlass adres URL uwierzytelniania otworzy się w wyskakującym okienku.
  2. Spowoduje to bezpośrednie wysłanie użytkownika do zakresów do zaakceptowania.
  3. Gdy użytkownik zaakceptuje lub anuluje zakresy, zamknij wyskakujące okienko.

Powiel z konta

  1. Po włączeniu w MyGlass adres URL uwierzytelniania otworzy się w wyskakującym okienku.
    • Jeśli użytkownik jest już zalogowany w Twojej usłudze, wyślij go bezpośrednio do zakresów.
    • Jeśli użytkownik nie jest zalogowany, wyświetl pola logowania i zezwól mu na zalogowanie do usługi, a potem wysyłać je do zakresów.
    • Jeśli użytkownik nie ma konta, podaj link umożliwiający utworzenie koncie. Użytkownicy muszą mieć możliwość utworzenia konta w ramach procesu instalacji.
  2. Użytkownik akceptuje zakresy.
    • Jeśli oprogramowanie Glassware ma konfigurowalne ustawienia, skieruj użytkownika do po wybraniu rozsądnych wartości domyślnych.
    • Jeśli oprogramowanie Glassware nie ma konfigurowalnych ustawień, skieruj użytkownika do stronę potwierdzenia. Jeśli nie ma dodatkowej konfiguracji, zamknij wyskakujące okienko.

Hybrydowe z kontem

  1. Po włączeniu w MyGlass adres URL uwierzytelniania otworzy się w wyskakującym okienku.
    • Jeśli użytkownik jest już zalogowany w Twojej usłudze, wyślij go bezpośrednio do zakresów.
    • Jeśli użytkownik nie jest zalogowany, pokaż pola logowania i zezwól mu na zalogowanie i wysyłanie ich do zakresów.
    • Jeśli użytkownik nie ma konta, podaj link do jego utworzenia.
  2. Użytkownik akceptuje zakresy.
  3. Wyślij żądanie do interfejsu Mirror API, aby wstawić konto GDK.
    • Przekieruj użytkownika na stronę ustawień z wybranymi rozsądnymi ustawieniami domyślnymi.
    • Wyślij użytkownikowi stronę potwierdzenia. Zamknij wyskakujące okienko, jeśli nie ma dodatkowych jest wymagana.

Powiel lub hybrydowy widok z kontem i niestandardowymi zakresami

  1. Po włączeniu w MyGlass adres URL uwierzytelniania otworzy się w wyskakującym okienku.
    • Jeśli użytkownik jest już zalogowany w Twojej usłudze, skieruj go do zakresy wewnętrzne
    • Jeśli użytkownik nie jest zalogowany, pokaż pola logowania i zezwól mu na zalogowanie a następnie wysyłać je do zakresów wewnętrznych
    • Jeśli użytkownik nie ma konta, podaj link do jego utworzenia.
  2. Gdy użytkownik zaakceptuje zakresy niestandardowe, przekieruj go do zakresów Google.
  3. Wyślij żądanie do interfejsu Mirror API, aby wstawić konto GDK.
    • Przekieruj użytkownika na stronę ustawień z wybranymi rozsądnymi ustawieniami domyślnymi.
    • Wyślij użytkownikowi stronę potwierdzenia. Zamknij wyskakujące okienko, jeśli nie ma dodatkowych jest wymagana.

Wersje hybrydowe lub hybrydowe w aplikacji na Androida lub iPhone'a

  1. Po włączeniu w MyGlass adres URL uwierzytelniania otworzy się w wyskakującym okienku.
  2. Spowoduje to bezpośrednie wysłanie użytkownika do zakresów do zaakceptowania.
  3. Gdy użytkownik zaakceptuje zakresy:
    • Jeśli użytkownik ma aplikację towarzyszącą i jest uwierzytelniony, zamknij wyskakujące okienko okno.
    • Jeśli nie, przekieruj go do strony pełnoekranowej z linkiem do pobrania ze Sklepu Google Play lub sklepu na iOS
  4. Po zainstalowaniu aplikacji i uwierzytelnieniu zamknij wyskakujące okienko

GDK i brak konta

Aby to zrobić, wystarczy włączyć Glassware w MyGlass.

GDK z kontem

  1. Po włączeniu w MyGlass adres URL uwierzytelniania otworzy się w wyskakującym okienku.
    • Jeśli użytkownik jest już zalogowany w Twojej usłudze, skieruj go do ekranu potwierdzenia.
    • Jeśli użytkownik nie jest zalogowany, wyświetl pola logowania i zezwól mu na to zaloguj się i wyświetl ekran potwierdzenia.
    • Jeśli użytkownik nie ma konta, podaj link do jego utworzenia.
  2. Użytkownik akceptuje zakresy.
  3. Wyślij żądanie do interfejsu Mirror API, aby wstawić konto GDK.
  4. Pokaż ekran potwierdzenia i zamknij go po upływie w krótkim czasie.

Przykłady tworzenia kont

Użyj bibliotek klienta. dla interfejsu Mirror API. To sprawia, że dzwonię pod mirror.accounts.insert aby ułatwić sobie utworzenie konta.

Przykład nieprzetworzonego protokołu HTTP

Poniżej znajdziesz tylko adres URL żądania oraz przykład Oczekiwana treść JSON. Wysyłanie nieprzetworzonych żądań HTTP w imieniu usługi konto jest znacznie bardziej skomplikowane (zobacz Używanie protokołu OAuth 2.0 w aplikacjach międzyserwerowych ), więc zalecamy skorzystanie z jednego z naszych interfejsów API biblioteki klienta aby ułatwić ten proces.

Metoda żądania i URL:

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

Treść żądania:

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

Zastąp {userToken} w adresie URL żądania tokenem, który został przekazany do adresu URL uwierzytelniania w kroku 1 Wdrażanie procesu uwierzytelniania.

Przykład w Javie

Ten przykład pokazuje, jak użyć biblioteki klienta w Javie do wywoływania 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();
  }
}

Pobieranie kont na Google Glass

Pobieranie i używanie Account są podobne do obiektów w standardowym Androidzie. AccountManager

  1. Zadeklaruj te uprawnienia w pliku manifestu w pliku AndroidManifest.xml:

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    
  2. Pobierz konta 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. Pobierz token uwierzytelniania ze strony 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);