Wenn Ihre GDK-Glassware Nutzer über einen Webdienst authentifizieren muss, stellt das GDK eine API bereit, mit der Nutzer ihre Anmeldedaten eingeben können, wenn sie und installieren Sie die Glassware.
Mit dieser API sorgen Sie für einen konsistenten eine bessere Nutzererfahrung bieten und den Aufwand für die Implementierung mit benutzerdefinierten Authentifizierungsschemata.
Google API-Dienstkonto erstellen
Wenn die Authentifizierung korrekt eingerichtet ist, verwendet die Mirror API, um die Kontoinformationen für Glass nachdem sie sich bei Ihrem Dienst authentifiziert haben.
Um auf diese API zuzugreifen, erstellen Sie ein Google API-Projekt und Client-ID für ein „Dienstkonto“ erstellen und keine „Webanwendung“. Von Dienstkonto verwenden, müssen Nutzer Ihre App-Berechtigung, ihre Anmeldedaten an Glass zu senden, und Es wird sowohl die OAuth-Berechtigungsseite als auch Ihre eigene Authentifizierung angezeigt. Seite erneut aufrufen.
So erstellen Sie dieses Konto:
- Rufen Sie die Google Developers Console auf.
- Klicken Sie auf die Schaltfläche Projekt erstellen und geben Sie die erforderlichen Informationen ein.
- Notieren Sie sich die Projektnummer, nachdem das Projekt erstellt wurde. die Sie später benötigen.
- Wählen Sie unter APIs und Auth auf, klicken Sie auf APIs und aktivieren Sie die Google Mirror API. für Ihr neues Projekt.
- Wählen Sie unter APIs und auth auf Anmeldedaten und dann auf Neuen Client erstellen ID. Klicke auf das Kästchen Dienstkonto, um ein neues OAuth 2.0 zu erstellen. Client-ID für das Projekt.
- In einem Pop-up-Fenster werden Sie darüber informiert, dass der private Schlüssel heruntergeladen wird. an Ihren Computer und sendet Ihnen das Passwort für diesen privaten Schlüssel. Wenn Sie dieses Fenster schließen, können Sie dieses private Dokument nicht mehr herunterladen oder das Passwort noch einmal sehen. Sollten diese verloren gehen, müssen Sie ein neues 1.
- Notieren Sie sich die E-Mail-Adresse des Dienstkontos, die Sie benötigen. um den API-Aufruf auszuführen.
Metadaten zu Ihrer Glassware bereitstellen
Wenn Sie bereit sind, Ihre Glassware einzureichen, müssen Sie die folgenden Informationen. So können wir Ihre Glassware so einrichten, bei der Implementierung korrekt authentifiziert ist.
- Ihre Authentifizierungs-URL, an die Nutzer weitergeleitet werden, wenn sie werden Ihre Glassware in MyGlass eingeschaltet.
- Der Kontotyp (der String, den Sie beim Aufrufen der
Android
AccountManager
APIs auf dem Glass-Gerät) - Der Paketname Ihrer Anwendung aus Ihrem
AndroidManifest.xml
- Die numerische Google API-Projekt-ID des von Ihnen erstellten Projekts über
- Das APK zum Hochladen in MyGlass. Für Tests müssen Sie nur
dieses APK einmalig für den ersten Download, wenn Ihre Glassware
über MyGlass aktiviert; Danach können Sie lokal iterieren und Fehler
indem Sie das APK auf Ihrem Gerät überschreiben. Dieses APK muss folgende Anforderungen erfüllen:
folgende Kriterien erfüllen:
<ph type="x-smartling-placeholder">
- </ph>
- Es muss an den Reißverschlüssen ausgerichtet sein.
- Sie dürfen keine Änderungen am Paketnamen oder an der privaten Signatur vornehmen. (der Android-Paketmanager lässt keine Upgrades falls sich etwas ändert).
- Sie muss kleiner als 50 MB sein.
- Sie muss mit der neuesten Version des GDK kompiliert werden.
Authentifizierungsvorgang implementieren
Das folgende Diagramm zeigt den grundlegenden Authentifizierungsvorgang für GDK-Glassware:
So implementieren Sie den Authentifizierungsvorgang:
Wenn Nutzer Ihre Glassware in MyGlass aktivieren, werden sie automatisch an Ihre Authentifizierungs-URL an. Diese Anfragen enthalten einen Suchparameter namens
userToken
, die Sie später benötigen.Der Nutzer gibt seine Anmeldedaten auf der Authentifizierungsseite ein.
Ihr Server validiert die Anmeldedaten des Nutzers. Wenn die Anmeldedaten gültig sind, einen Mirror API-Aufruf an die Methode
mirror.accounts.insert
. Diese Methode müssen Sie den Parameterhttps://www.googleapis.com/auth/glass.thirdpartyauth
-Bereich, wenn Sie Ihren Dienstobjekt spiegeln. Beispiele für diesen API-Aufruf mit RAW-Dateien HTTP und Java finden Sie in den Beispielen für die Kontoerstellung.Die Parameter und der Anfragetext, die Sie unten angeben, sind identisch Informationen, die du der
AccountManager
von Android zur Verfügung stellst, wenn du das Konto direkt auf dem Gerät erstellt haben.Property-Name Wert Beschreibung features[]
Liste mit Strings Eine Liste der Funktionen (siehe <ph type="x-smartling-placeholder"></ph> AccountManager.hasFeatures
.password
String Das Kontopasswort (siehe <ph type="x-smartling-placeholder"></ph> AccountManager.getPassword
. Wir empfehlen, dass Sie das tatsächliche Passwort des Nutzers nicht dieses Felds hinzugefügt, sondern zum Speichern von langlebigen privaten wie ein Aktualisierungstoken.userData[]
Liste der Objekte Ein oder mehrere Paare von Nutzerdaten, die mit dem Konto verknüpft sind (siehe AccountManager.getUserData
.userData[].key
String Der Schlüssel, der mit einem bestimmten Schlüssel/Wert-Paar für Nutzerdaten verknüpft ist Paar zusammen. userData[].value
String Der Wert, der einem bestimmten Schlüssel/Wert-Paar für Nutzerdaten zugeordnet ist Paar zusammen. authTokens[]
Liste der Objekte Mindestens ein mit dem Konto verknüpftes Authentifizierungstoken (siehe AccountManager.getAuthToken
.authTokens[].type
String Der Typ des Authentifizierungstokens. authTokens[].authToken
String Das Authentifizierungstoken. Nach Empfang der
mirror.account.insert
-Anfrage sendet die Mirror API das Konto auf den Glass-Geräten des Nutzers, wo Sie jetzt darauf zugreifen können mithilfe der KlasseAccountManager
.
Empfohlene Authentifizierungsabläufe
Beachte die folgenden Richtlinien, um einen nutzerfreundlichen Authentifizierungsvorgang zu implementieren:
- Optimieren Sie Ihren Workflow für Mobilgeräte.
- Wenn Ihr Ablauf einen Umfang hat und die Nutzenden ihn abbrechen, sollten Sie Fehlermeldung erhalten.
- Vergewissern Sie sich, dass die von Ihnen angeforderten Bereiche auch wirklich in Ihrer Glassware verwendet werden.
- Wenn ein Nutzerkonto verbunden werden kann, achten Sie darauf, dass Sie es verknüpfen.
- Wenn möglich sollten Nutzerdaten in der Cloud gesichert werden.
Verwenden Sie eine der folgenden Methoden, um die Konsistenz bei der Glassware-Authentifizierung zu wahren. Authentifizierungsabläufe:
Ohne Konto spiegeln oder hybrid verwenden
- Nach dem Aktivieren in MyGlass wird Ihre Authentifizierungs-URL in einem Pop-up-Fenster geöffnet.
- Dadurch wird der Nutzer direkt zu den Bereichen weitergeleitet, auf denen er akzeptiert werden kann.
- Nachdem der Nutzer die Bereiche akzeptiert oder abgebrochen hat, schließen Sie das Pop-up-Fenster.
Mit einem Konto spiegeln
- Nach dem Aktivieren in MyGlass wird Ihre Authentifizierungs-URL in einem Pop-up-Fenster geöffnet.
- Wenn der Nutzer bereits in Ihrem Dienst angemeldet ist, leiten Sie ihn direkt weiter zu Bereichen hinzufügen.
- Wenn der Nutzer nicht angemeldet ist, blenden Sie die Anmeldefelder ein und erlauben Sie ihm, sich anzumelden und senden sie dann an Bereiche.
- Wenn der Nutzer kein Konto hat, geben Sie einen Link zum Erstellen eines Konto. Nutzer müssen die Möglichkeit haben, im Rahmen des den Installationsprozess durchlaufen.
- Der Nutzer akzeptiert Bereiche.
- Verfügt Ihre Glassware über konfigurierbare Einstellungen, leiten Sie den Nutzer an die Einstellungsseite mit angemessenen Standardeinstellungen ausgewählt.
- Verfügt Ihre Glassware über keine konfigurierbaren Einstellungen, leiten Sie den Nutzer an folgende URL weiter: eine Bestätigungsseite. Schließen Sie das Pop-up-Fenster, wenn keine zusätzliche Konfiguration erforderlich.
Hybrid mit Konto
- Nach dem Aktivieren in MyGlass wird Ihre Authentifizierungs-URL in einem Pop-up-Fenster geöffnet.
- Wenn der Nutzer bereits in Ihrem Dienst angemeldet ist, leiten Sie ihn direkt weiter zu Bereichen hinzufügen.
- Wenn der Nutzer nicht angemeldet ist, Anmeldefelder anzeigen und ihm erlauben, sich anzumelden und senden sie dann an Bereiche.
- Wenn der Nutzer kein Konto hat, gib einen Link zum Erstellen eines Kontos an.
- Der Nutzer akzeptiert Bereiche.
- Senden Sie eine Anfrage an die Mirror API, um das GDK-Konto einzufügen.
- Den Nutzer auf die Seite mit den Einstellungen weiterleiten, auf der sinnvolle Standardeinstellungen ausgewählt sind
- Senden Sie dem Nutzer eine Bestätigungsseite. Schließen Sie das Pop-up-Fenster, wenn Sie keine weiteren Konfiguration erforderlich.
Spiegeln oder Hybriden mit einem Konto und benutzerdefinierten Bereichen
- Nach dem Aktivieren in MyGlass wird Ihre Authentifizierungs-URL in einem Pop-up-Fenster geöffnet.
- Wenn der Nutzer bereits bei Ihrem Dienst angemeldet ist, leiten Sie ihn zu Ihrem interne Bereiche
- Wenn der Nutzer nicht angemeldet ist, Anmeldefelder anzeigen und ihm erlauben, sich anzumelden und senden sie dann an Ihre internen
- Wenn der Nutzer kein Konto hat, gib einen Link zum Erstellen eines Kontos an.
- Wenn der Nutzer Ihre benutzerdefinierten Bereiche akzeptiert, leiten Sie ihn zu den Bereichen von Google weiter.
- Senden Sie eine Anfrage an die Mirror API, um das GDK-Konto einzufügen.
- Den Nutzer auf die Seite mit den Einstellungen weiterleiten, auf der sinnvolle Standardeinstellungen ausgewählt sind
- Senden Sie dem Nutzer eine Bestätigungsseite. Schließen Sie das Pop-up-Fenster, wenn Sie keine weiteren Konfiguration erforderlich.
Spiegeln oder hybrid mit einer Android-/iPhone-App verwenden
- Nach dem Aktivieren in MyGlass wird Ihre Authentifizierungs-URL in einem Pop-up-Fenster geöffnet.
- Dadurch wird der Nutzer direkt zu den Bereichen weitergeleitet, auf denen er akzeptiert werden kann.
- Nachdem der Nutzer Bereiche akzeptiert hat:
<ph type="x-smartling-placeholder">
- </ph>
- Wenn der Nutzer die Companion-App hat und authentifiziert ist, schließe das Pop-up. .
- Falls nicht, leiten Sie den Nutzer zu einem Interstitial weiter, das ihn zum Herunterladen der App aus dem Google Play Store oder iOS Store
- Schließe nach der Installation der App und der Authentifizierung das Pop-up-Fenster.
GDK und kein Konto
Für diesen Ablauf ist lediglich das Ein-/Ausschalten der Glassware in MyGlass erforderlich.
GDK mit Konto
- Nach dem Aktivieren in MyGlass wird Ihre Authentifizierungs-URL in einem Pop-up-Fenster geöffnet.
- Wenn der Nutzer bereits in Ihrem Dienst angemeldet ist, leiten Sie ihn an die Bestätigungsbildschirm.
- Wenn der Nutzer nicht angemeldet ist, blenden Sie die Anmeldefelder ein und erlauben Sie ihm, melden Sie sich an und senden Sie sie zum Bestätigungsbildschirm.
- Wenn der Nutzer kein Konto hat, gib einen Link zum Erstellen eines Kontos an.
- Der Nutzer akzeptiert Bereiche.
- Senden Sie eine Anfrage an die Mirror API, um das GDK-Konto einzufügen.
- Bestätigungsbildschirm anzeigen und Bildschirm nach einer Weile schließen in einem kurzen Zeitraum.
Beispiele für die Kontoerstellung
Clientbibliotheken verwenden
für die Mirror API. Dadurch wird mirror.accounts.insert
aufgerufen
um das Konto zu erstellen.
Raw-HTTP-Beispiel
Im folgenden Beispiel sehen Sie nur die URL der Anfrage und ein Beispiel für den JSON-Textkörper, den es erwartet. HTTP-Rohanfragen im Namen eines Dienstes stellen Konto ist viel komplizierter (siehe OAuth 2.0 für Server-zu-Server-Anwendungen verwenden ausführlichere Informationen). Daher empfehlen wir Ihnen, eine unserer Google-APIs zu verwenden, Clientbibliotheken um dies zu vereinfachen.
Anfragemethode und URL:
POST https://www.googleapis.com/mirror/v1/accounts/{userToken}/com.example.myapp/username%40email.com
Anfragetext:
{
"features": ["a", "b", "c"],
"userData": [
{ "key": "realName", "value": "Rusty Shackleford" },
{ "key": "foo", "value": "bar" }
],
"authTokens": [
{ "type": "your_token_type", "authToken": "zT419Ma3X2pBr0L..." }
]
}
Ersetzen Sie {userToken}
in der Anfrage-URL durch das Token, das an
Ihre Authentifizierungs-URL in Schritt 1 der
Authentifizierungsvorgang implementieren
Java-Beispiel
In diesem Beispiel wird gezeigt, wie Sie mit der Java-Clientbibliothek
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();
}
}
Konten in Glass abrufen
Account
abrufen und verwenden
ist der Verwendung der Standard-Android-App
AccountManager
Deklariere in deiner
AndroidManifest.xml
-Datei die folgenden Manifestberechtigungen:<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" />
Rufen Sie die Glassware-Konten ab:
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.
Rufen Sie ein Authentifizierungstoken aus dem
Account
ab:// 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);