Achtung: Diese Daten können unter der bereitgestellten Google - Nutzer - Datenschutzrichtlinie . Bitte überprüfen und befolgen Sie die Richtlinien. Andernfalls kann es zu einer Sperrung des Projekts oder des Kontos kommen.

Melden Sie sich auf Fernsehern und eingeschränkten Eingabegeräten an

Sie können Nutzern erlauben, sich mit ihren Google-Konten auf Geräten mit eingeschränkten Eingabemöglichkeiten, wie z. B. internetfähigen Fernsehern, bei Ihrer App anzumelden.

Die App zeigt dem Benutzer einen Funktionscode und eine Anmelde-URL an. Anschließend öffnet der Benutzer die Anmelde-URL in einem Webbrowser, gibt den Code ein und erteilt der App die Berechtigung, auf die Anmeldeinformationen des Benutzers zuzugreifen. Abschließend erhält die App eine Bestätigung und der Benutzer wird angemeldet.

Um diesen Anmeldeablauf zu verwenden, muss die App auf einem Gerät ausgeführt werden, das die folgenden Kriterien erfüllt:

  • Das Gerät muss in der Lage sein, eine 40-stellige URL und einen 15-stelligen Benutzercode zusammen mit Anweisungen für den Benutzer anzuzeigen.
  • Das Gerät muss mit dem Internet verbunden sein.

Rufen Sie eine Client-ID und ein Client-Geheimnis ab

Ihre App benötigt eine OAuth 2.0-Client-ID und einen geheimen Clientschlüssel, um Anfragen an die Anmeldeendpunkte von Google zu senden.

Gehen Sie wie folgt vor, um die Client-ID und das Client-Geheimnis Ihres Projekts zu finden:

  1. Wählen Sie einen vorhandenen OAuth 2.0-Berechtigungsnachweis aus oder öffnen Sie die Seite Berechtigungsnachweise .
  2. Falls Sie dies noch nicht getan haben, erstellen Sie die OAuth 2.0-Anmeldeinformationen Ihres Projekts, indem Sie auf Anmeldeinformationen erstellen > OAuth-Client-ID klicken und die zum Erstellen der Anmeldeinformationen erforderlichen Informationen bereitstellen.
  3. Suchen Sie im Abschnitt OAuth 2.0-Client-IDs nach der Client-ID . Klicken Sie für Details auf die Client-ID.

Wenn Sie eine neue Client-ID erstellen, wählen Sie den Anwendungstyp Fernseher und eingeschränkte Eingabegeräte aus.

Rufen Sie einen Benutzercode und eine Bestätigungs-URL ab

Sobald ein Nutzer die Anmeldung mit einem Google-Konto anfordert, erhalten Sie einen Nutzercode und eine Bestätigungs-URL, indem Sie eine HTTP-POST-Anfrage an den OAuth 2.0-Geräteendpunkt https://oauth2.googleapis.com/device/code senden. Fügen Sie der Anfrage Ihre Client-ID und eine Liste der Bereiche bei, die Sie benötigen. Wenn Sie Benutzer nur mit ihren Google-Konten anmelden möchten, fordern Sie nur die profile und E- email Bereiche an; Wenn Sie die Berechtigung zum Aufrufen einer unterstützten API im Namen von Benutzern anfordern möchten, fordern Sie zusätzlich zu den profile und E- email Bereichen die erforderlichen Bereiche an.

Das Folgende ist eine Beispielanforderung für einen Benutzercode:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&scope=email%20profile

Verwendung von curl :

curl -d "client_id=CLIENT_ID&scope=email profile" https://oauth2.googleapis.com/device/code

Die Antwort wird als JSON-Objekt zurückgegeben:

{
  "device_code" : "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code" : "GQVQ-JKEC",
  "verification_url" : "https://www.google.com/device",
  "expires_in" : 1800,
  "interval" : 5
}

Ihre App zeigt dem Benutzer die Werte user_code und „ verification_url “ an und fragt gleichzeitig den Anmeldeendpunkt im angegebenen interval ab, bis sich entweder der Benutzer anmeldet oder die durch expires_in angegebene Zeit verstrichen ist.

Zeigen Sie den Benutzercode und die Bestätigungs-URL an

Nachdem Sie vom Geräteendpunkt einen Benutzercode und eine Bestätigungs-URL erhalten haben, zeigen Sie diese an und weisen Sie den Benutzer an, die URL zu öffnen und den Benutzercode einzugeben.

Die Werte von verification_url und user_code können sich ändern. Entwerfen Sie Ihre Benutzeroberfläche so, dass sie die folgenden Einschränkungen handhaben kann:

  • user_code muss in einem Feld angezeigt werden, das breit genug ist, um 15 W -große Zeichen zu verarbeiten.
  • verification_url -url muss in einem Feld angezeigt werden, das breit genug ist, um eine URL-Zeichenfolge mit einer Länge von 40 Zeichen zu verarbeiten.

Beide Zeichenfolgen können alle druckbaren Zeichen aus dem US-ASCII-Zeichensatz enthalten.

Wenn Sie die user_code -Zeichenfolge anzeigen, ändern Sie die Zeichenfolge in keiner Weise (z. B. durch Ändern der Groß-/Kleinschreibung oder Einfügen anderer Formatierungszeichen), da Ihre App möglicherweise beschädigt wird, wenn sich das Format des Codes in Zukunft ändert.

Sie können die Zeichenfolge „ verification_url “ ändern, indem Sie das Schema für Anzeigezwecke von der URL entfernen, wenn Sie dies wünschen. Stellen Sie in diesem Fall sicher, dass Ihre App sowohl "http"- als auch "https"-Varianten verarbeiten kann. Verändern Sie die Zeichenkette „ verification_url “ ansonsten nicht.

Wenn der Benutzer zur Bestätigungs-URL navigiert, sieht er eine Seite ähnlich der folgenden:

Verbinden Sie ein Gerät, indem Sie einen Code eingeben

Nachdem der Benutzer den Benutzercode eingegeben hat, zeigt die Google-Anmeldeseite einen Zustimmungsbildschirm ähnlich dem folgenden:

Beispiel-Zustimmungsbildschirm für einen Geräteclient

Wenn der Benutzer auf Zulassen klickt , kann Ihre App ein ID-Token zum Identifizieren des Benutzers, ein Zugriffstoken zum Aufrufen von Google-APIs und ein Aktualisierungstoken zum Abrufen neuer Token abrufen.

Rufen Sie ein ID-Token und ein Aktualisierungstoken ab

Nachdem Ihre App den Benutzercode und die Bestätigungs-URL anzeigt, beginnen Sie mit dem Abfragen des Tokenendpunkts ( https://oauth2.googleapis.com/token ) mit dem Gerätecode, den Sie vom Geräteendpunkt erhalten haben. Rufen Sie den Token-Endpunkt in dem durch den interval angegebenen Intervall in Sekunden ab.

Das Folgende ist eine Beispielanfrage:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0

Verwendung von curl :

curl -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0" https://oauth2.googleapis.com/token

Wenn der Benutzer die Anfrage noch nicht genehmigt hat, lautet die Antwort wie folgt:

{
  "error" : "authorization_pending"
}

Ihre App sollte diese Anfragen mit einer Rate wiederholen, die den Wert von interval nicht überschreitet. Wenn Ihre App zu schnell abfragt, lautet die Antwort wie folgt:

{
  "error" : "slow_down"
}

Sobald sich der Benutzer anmeldet und Ihrer App Zugriff auf die von Ihnen angeforderten Bereiche gewährt, enthält die Antwort auf die nächste Anfrage Ihrer App ein ID-Token, ein Zugriffstoken und ein Aktualisierungstoken:

{
  "access_token" : "ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q",
  "id_token": "eyJhbGciOiJSUzI..."
}

Nach Erhalt dieser Antwort kann Ihre App das ID-Token entschlüsseln, um grundlegende Profilinformationen über den angemeldeten Benutzer abzurufen, oder das ID-Token an den Back-End-Server Ihrer App senden, um sich sicher beim Server zu authentifizieren. Außerdem kann Ihre App das Zugriffstoken verwenden, um die Google-APIs aufzurufen , die der Benutzer autorisiert hat.

ID- und Zugriffstoken haben eine begrenzte Lebensdauer. Um den Benutzer über die Gültigkeitsdauer der Token hinaus angemeldet zu halten, speichern Sie das Aktualisierungstoken und verwenden Sie es, um neue Token anzufordern .

Rufen Sie Benutzerprofilinformationen aus dem ID-Token ab

Sie können Profilinformationen über den angemeldeten Benutzer abrufen, indem Sie das ID-Token mit einer beliebigen JWT-Decodierungsbibliothek decodieren . Verwenden Sie beispielsweise die JavaScript-Bibliothek Auth0 jwt-decode :

var user_profile = jwt_decode(id_token);

// The "sub" field is available on all ID tokens. This value is unique for each
// Google account and can be used to identify the user. (But do not send this
// value to your server; instead, send the whole ID token so its authenticity
// can be verified.)
var user_id = user_profile["sub"];

// These values are available when you request the "profile" and "email" scopes.
var user_email = user_profile["email"];
var email_verified = user_profile["email_verified"];
var user_name = user_profile["name"];
var user_photo_url = user_profile["picture"];
var user_given_name = user_profile["given_name"];
var user_family_name = user_profile["family_name"];
var user_locale = user_profile["locale"];

Mehr Informationen