Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Google-Anmeldung für Fernseher und Geräte

Sie können Benutzer mit ihren Google-Konten auf Geräten mit eingeschränkten Eingabefunktionen, z. B. Fernsehgeräten mit Internetverbindung, bei Ihrer App anmelden lassen.

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 zum Zugriff auf die Anmeldeinformationen des Benutzers. Schließlich erhält die App eine Bestätigung und der Benutzer ist angemeldet.

Um diesen Anmeldefluss verwenden zu können, 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 sowie Anweisungen an den Benutzer anzuzeigen.
  • Das Gerät muss mit dem Internet verbunden sein.

Holen Sie sich eine Kunden-ID und ein Kundengeheimnis

Ihre App benötigt eine OAuth 2.0-Client-ID und ein Client-Geheimnis, um Anfragen an die Anmeldeendpunkte von Google zu richten.

Gehen Sie wie folgt vor, um die Kunden-ID und das Kundengeheimnis Ihres Projekts zu ermitteln:

  1. Wählen Sie einen vorhandenen OAuth 2.0-Berechtigungsnachweis aus oder öffnen Sie die Seite Anmeldeinformationen .
  2. Wenn 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 . Für Details klicken Sie auf die Client-ID.

Wenn Sie eine neue Client-ID erstellen, wählen Sie den Anwendungstyp Fernsehgeräte und Geräte mit eingeschränkter Eingabe aus .

Erhalten Sie einen Benutzercode und eine Bestätigungs-URL

Sobald ein Benutzer die Anmeldung mit einem Google-Konto anfordert, erhalten Sie einen Benutzercode und eine Bestätigungs-URL, indem Sie eine HTTP-POST-Anforderung an den OAuth 2.0-Geräteendpunkt https://oauth2.googleapis.com/device/code senden. Fügen Sie der Anfrage Ihre Kunden-ID und eine Liste der Bereiche bei, die Sie benötigen. Wenn Sie nur Nutzer mit ihren Google-Konten anmelden möchten, fordern Sie nur die profile und 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 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

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 user_code Werte user_code und verification_url an und user_code den user_code im angegebenen interval bis sich entweder der Benutzer expires_in oder die von expires_in angegebene Zeit expires_in ist.

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

Nachdem Sie einen Benutzercode und eine Bestätigungs-URL vom Geräteendpunkt 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 sich ändern. Entwerfen Sie Ihre Benutzeroberfläche so, dass die folgenden Einschränkungen eingehalten werden:

  • user_code muss in einem Feld angezeigt werden, das breit genug ist, um 15 Zeichen in W Größe zu verarbeiten.
  • verification_url muss in einem Feld angezeigt werden, das breit genug ist, um eine 40 Zeichen lange URL-Zeichenfolge zu verarbeiten.

Beide Zeichenfolgen können beliebige druckbare Zeichen aus dem US-ASCII-Zeichensatz enthalten.

Wenn Sie die Zeichenfolge user_code anzeigen, ändern Sie die Zeichenfolge in keiner Weise (z. B. durch Ändern der Groß- und 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 zu Anzeigezwecken 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. Ändern Sie die Zeichenfolge verification_url nicht anderweitig.

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

Schließen Sie ein Gerät an, indem Sie einen Code eingeben

Nachdem der Nutzer den Benutzercode eingegeben hat, wird auf der Google-Anmeldeseite ein Zustimmungsbildschirm angezeigt, der dem folgenden ähnelt:

Beispiel für einen Zustimmungsbildschirm für einen Geräteclient

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

Erhalten Sie ein ID-Token und aktualisieren Sie das Token

Nachdem Ihre App den Benutzercode und die Bestätigungs-URL angezeigt hat, beginnen Sie mit der Abfrage des Token-Endpunkts ( https://oauth2.googleapis.com/token ) mit dem Gerätecode, den Sie vom Geräteendpunkt erhalten haben. Fragen Sie den Token-Endpunkt in dem Intervall in Sekunden ab, das durch den interval angegeben wird.

Das Folgende ist eine Beispielanforderung:

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

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 Anforderung noch nicht genehmigt hat, lautet die Antwort wie folgt:

{
  "error" : "authorization_pending"
}

Ihre App sollte diese Anforderungen mit einer Rate wiederholen, die den Wert des 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 Anforderung 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 dekodieren, 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 vom Benutzer autorisierten Google-APIs aufzurufen .

ID- und Zugriffstoken haben eine begrenzte Lebensdauer. Speichern Sie das Aktualisierungstoken und verwenden Sie es, um neue Token anzufordern , damit der Benutzer über die Lebensdauer der Token hinaus angemeldet bleibt .

Rufen Sie Benutzerprofilinformationen vom ID-Token ab

Sie können Profilinformationen über den angemeldeten Benutzer abrufen, indem Sie das ID-Token mit einer beliebigen JWT-Decodierungsbibliothek dekodieren . 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

  • Informationen zum Anmelden von Benutzern über die Lebensdauer eines ID-Tokens hinaus finden Sie unter Aktualisieren eines Zugriffstokens .
  • Wenn Sie sich bei einem Back-End-Server authentifizieren müssen, finden Sie unter Authentifizieren bei einem Back- End-Server Informationen dazu, wie Sie dies sicher tun können.