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:
- Otwórz Google Developers Console.
- Kliknij przycisk Utwórz projekt i wpisz wymagane informacje.
- Po utworzeniu projektu zanotuj numer projektu, które będą potrzebne później.
- W sekcji Interfejsy API i auth, kliknij APIs (Interfejsy API) i włącz Google Mirror API. do swojego nowego projektu.
- 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.
- 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.
- 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:
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.Użytkownik wpisuje swoje dane logowania na stronie uwierzytelniania.
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śleniahttps://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. 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ą klasyAccountManager
.
Zalecane przepływy uwierzytelniania
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
- Po włączeniu w MyGlass adres URL uwierzytelniania otworzy się w wyskakującym okienku.
- Spowoduje to bezpośrednie wysłanie użytkownika do zakresów do zaakceptowania.
- Gdy użytkownik zaakceptuje lub anuluje zakresy, zamknij wyskakujące okienko.
Powiel z konta
- 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.
- 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
- 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.
- Użytkownik akceptuje zakresy.
- 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
- 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.
- Gdy użytkownik zaakceptuje zakresy niestandardowe, przekieruj go do zakresów Google.
- 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
- Po włączeniu w MyGlass adres URL uwierzytelniania otworzy się w wyskakującym okienku.
- Spowoduje to bezpośrednie wysłanie użytkownika do zakresów do zaakceptowania.
- 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
- 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
- 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.
- Użytkownik akceptuje zakresy.
- Wyślij żądanie do interfejsu Mirror API, aby wstawić konto GDK.
- 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
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" />
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.
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);