Google-Kontoverknüpfung mit OAuth

Die Konten werden mithilfe von In-App-Käufen über den impliziten und Standard-Autorisierungscode von OAuth 2.0 verknüpft. Der Dienst muss die OAuth 2.0-konformen Endpunkte für die Autorisierung und den Tokenaustausch unterstützen.

Im impliziten Ablauf öffnet Google Ihren Autorisierungsendpunkt im Browser des Nutzers. Nach der erfolgreichen Anmeldung geben Sie ein langlebiges Zugriffstoken an Google zurück. Dieses Zugriffstoken ist jetzt in jeder von Google gesendeten Anfrage enthalten.

Im Ablauf des Autorisierungscodes benötigen Sie zwei Endpunkte:

  • Der Autorisierungsendpunkt, der Nutzern die Anmelde-UI zeigt, die noch nicht angemeldet sind. Der Autorisierungsendpunkt erstellt außerdem einen kurzlebigen Autorisierungscode, um Nutzer aufzuzeichnen und in den angeforderten Zugriff einzuwilligen.

  • Der Token-Exchange-Endpunkt, der für zwei Arten von Anzeigenplattformen verantwortlich ist:

    1. Autorisierungscode für ein langlebiges Aktualisierungstoken und ein kurzlebiges Zugriffstoken austauschen. Der Austausch erfolgt, wenn der Nutzer die Kontoverknüpfung durchläuft.
    2. Ein langlebiges Aktualisierungstoken wird gegen ein kurzlebiges Zugriffstoken ausgetauscht. Dieser Austausch erfolgt, wenn Google ein neues Zugriffstoken benötigt, weil es abgelaufen ist.

OAuth 2.0-Vorgang auswählen

Obwohl der implizite Vorgang einfacher zu implementieren ist, empfiehlt Google, dass die vom impliziten Vorgang ausgegebenen Zugriffstokens nie ablaufen. Der Nutzer muss dann sein Konto wieder verknüpfen, nachdem ein Token mit dem impliziten Vorgang abgelaufen ist. Wenn Sie aus Sicherheitsgründen ein Token ablaufen müssen, empfehlen wir dringend, stattdessen den Autorisierungscode zu verwenden.

Gestaltungsrichtlinien

In diesem Abschnitt werden die Designanforderungen und Empfehlungen für den Bildschirm des Nutzers beschrieben, den Sie für OAuth-Verknüpfungsabläufe hosten. Nachdem die App von Google aufgerufen wurde, wird auf deiner Plattform eine Anmeldung auf der Google-Seite und ein Bildschirm für die Einwilligung zur Kontoverknüpfung angezeigt. Nachdem der Nutzer seine Einwilligung zur Verknüpfung von Konten erteilt hat, wird er zur App von Google zurückgeleitet.

In dieser Abbildung werden die Schritte dargestellt, mit denen Nutzer ihr Google-Konto mit ihrem Authentifizierungssystem verknüpfen können. Der erste Screenshot zeigt die vom Nutzer initiierte Verknüpfung von deiner Plattform. Das zweite Bild zeigt die Anmeldung des Nutzers in Google, während auf dem dritten die Einwilligung und die Bestätigung des Nutzers für die Verknüpfung seines Google-Kontos mit der App zu sehen ist. Im letzten Screenshot wird ein erfolgreich verknüpftes Nutzerkonto in der Google App angezeigt.
Abbildung 1: Kontoverknüpfung zur Anmeldung in Google und Zustimmungsbildschirme.

Voraussetzungen

  1. Sie müssen angeben, dass das Konto des Nutzers mit Google verknüpft wird, nicht mit einem bestimmten Google-Produkt wie Google Home oder Google Assistant.

Empfehlungen

Wir empfehlen Folgendes:

  1. Datenschutzerklärung von Google anzeigen Geben Sie auf dem Zustimmungsbildschirm einen Link zur Datenschutzerklärung von Google an.

  2. Zu teilende Daten. Verwenden Sie eine klare und präzise Formulierung, um dem Nutzer mitzuteilen, welche Daten er benötigt und warum.

  3. Klarer Call-to-Action Geben Sie auf dem Zustimmungsbildschirm einen klaren Call-to-Action wie „Zustimmen und verknüpfen“ an. Der Nutzer muss verstehen, welche Daten zur Freigabe des Kontos an Google weitergegeben werden müssen.

  4. Stornierung möglich. Nutzer können zurückgehen oder den Vorgang abbrechen, wenn sie sich gegen das Verknüpfen entscheiden.

  5. Anmeldevorgang löschen. Achte darauf, dass Nutzer eine klare Methode für die Anmeldung in ihrem Google-Konto haben, z. B. Felder für ihren Nutzernamen und ihr Passwort oder Über Google anmelden.

  6. Verknüpfung aufheben: Nutzern einen Mechanismus zur Aufhebung der Verknüpfung anbieten, z. B. eine URL zu ihren Kontoeinstellungen auf deiner Plattform. Alternativ kannst du einen Link zu Google-Konto einfügen, über den die Nutzer ihr verknüpftes Konto verwalten können.

  7. Änderung des Nutzerkontos: Schlagen Sie eine Methode vor, mit der Nutzer ihr Konto oder ihre Konten wechseln können. Dies ist insbesondere dann hilfreich, wenn Nutzer normalerweise mehrere Konten haben.

    • Wenn ein Nutzer den Zustimmungsbildschirm schließen muss, um das Konto zu wechseln, sendet einen Fehler, der behoben werden kann, an Google, damit er sich über OAuth-Verknüpfung und den impliziten Vorgang im gewünschten Konto anmelden kann.
  8. Fügen Sie Ihr Logo ein. Anzeigen Ihres Unternehmenslogos auf dem Zustimmungsbildschirm. Platzieren Sie Ihr Logo anhand Ihrer Stilrichtlinien. Informationen zur Darstellung des Google-Logos findest du unter Logos und Marken.

Projekt erstellen

So erstellen Sie Ihr Projekt für die Kontoverknüpfung:

  1. Go to the Google API Console.
  2. Klicken Sie auf Projekt erstellen .
  3. Geben Sie einen Namen ein oder akzeptieren Sie den generierten Vorschlag.
  4. Bestätigen oder bearbeiten Sie alle verbleibenden Felder.
  5. Klicken Sie auf Erstellen .

So zeigen Sie Ihre Projekt-ID an:

  1. Go to the Google API Console.
  2. Finden Sie Ihr Projekt in der Tabelle auf der Zielseite. Die Projekt - ID wird in der ID - Spalte.

Die Google-Kontoverknüpfung umfasst einen Zustimmungsbildschirm, auf dem Nutzer über die App informiert werden, die Zugriff auf ihre Daten anfordert, welche Art von Daten sie anfordern und welche Nutzungsbedingungen gelten. Sie müssen den OAuth-Zustimmungsbildschirm konfigurieren, bevor Sie eine Google API-Client-ID generieren.

  1. Öffnen Sie die Seite OAuth-Zustimmungsbildschirm der Google APIs-Konsole.
  2. Wenn Sie dazu aufgefordert werden, wählen Sie das soeben erstellte Projekt aus.
  3. Füllen Sie auf der Seite „OAuth-Zustimmungsbildschirm“ das Formular aus und klicken Sie auf die Schaltfläche „Speichern“.

    Name der App:Der Name der App, die um Ihre Einwilligung gebeten wird. Der Name sollte genau zu Ihrer App passen und mit dem App-Namen übereinstimmen, den Nutzer an anderer Stelle sehen. Der Name der App wird auf dem Zustimmungsbildschirm für die Kontoverknüpfung angezeigt.

    App-Logo:Ein Bild auf dem Zustimmungsbildschirm, anhand dessen Nutzer Ihre App erkennen. Das Logo wird auf dem Zustimmungsbildschirm für die Kontoverknüpfung und in den Kontoeinstellungen angezeigt.

    Support-E-Mail-Adresse:Diese E-Mail-Adresse richtet sich an Nutzer, die Fragen zu ihrer Einwilligung haben.

    Bereiche für Google APIs:Mit Bereichen kann Ihre Anwendung auf die privaten Google-Daten Ihrer Nutzer zugreifen. Für den Anwendungsfall „Google-Kontoverknüpfung“ ist der Standardbereich (E-Mail-Adresse, Profil, OpenID) ausreichend. Sie müssen keine vertraulichen Bereiche hinzufügen. Im Allgemeinen empfiehlt es sich, Bereiche inkrementell anzufordern, und zwar dann, wenn Zugriff erforderlich ist, und nicht im Voraus. Weitere Informationen

    Autorisierte Domains:Google lässt zu Ihrem Schutz und Ihrer Nutzer nur Anwendungen zu, die sich über OAuth authentifizieren, um autorisierte Domains zu verwenden. Die Links Ihrer Anwendungen müssen in autorisierten Domains gehostet werden. Weitere Informationen

    Link zur Startseite der App:Startseite Ihrer App. Muss in einer autorisierten Domain gehostet werden.

    Link zur Datenschutzerklärung der Anwendung:Wird auf dem Zustimmungsbildschirm für die Google-Kontoverknüpfung angezeigt. Muss in einer autorisierten Domain gehostet werden.

    Link zu den Nutzungsbedingungen der Anwendung (optional): Muss in einer autorisierten Domain gehostet werden.

    Abbildung 1. Zustimmungsbildschirm für die Google-Kontoverknüpfung für eine fiktive App, Tunery

  4. Klicken Sie unter „Bestätigungsstatus“ auf „Bestätigungsstatus“. Wenn Ihr Antrag überprüft werden muss, klicken Sie auf die Schaltfläche „Zur Überprüfung einreichen“. Weitere Informationen finden Sie unter Anforderungen für die OAuth-Bestätigung.

OAuth-Server implementieren

Ihr Dienst führt eine Autorisierung durch, um den impliziten OAuth 2.0-Vorgang zu unterstützen. Endpunkt verfügbar über HTTPS. Dieser Endpunkt ist für die Authentifizierung und Einholen der Einwilligung der Nutzer für den Datenzugriff Den Autorisierungsendpunkt Nutzern, die noch nicht angemeldet sind, wird eine Anmeldeoberfläche angezeigt und die Daten werden aufgezeichnet. Zustimmung zum angeforderten Zugriff geben.

Wenn eine Google-Anwendung eine der autorisierten APIs Ihres Dienstes aufrufen muss, Google verwendet diesen Endpunkt, um von Ihren Nutzern die Berechtigung zum Aufrufen dieser APIs einzuholen im Namen der Person.

Eine typische von Google initiierte Sitzung im impliziten OAuth 2.0-Vorgang hat den folgenden Ablauf:

  1. Google öffnet Ihren Autorisierungsendpunkt im Browser des Nutzers. Die Der Nutzer meldet sich an, falls er nicht bereits angemeldet ist, und erteilt Google die Berechtigung, mit Ihrer API auf ihre Daten zugreifen, falls sie nicht bereits eine Berechtigung erteilt haben.
  2. Ihr Dienst erstellt ein Zugriffstoken und gibt es an Google. Leiten Sie dazu den Browser des Nutzers zurück zu Google mit den Zugriffsrechten Token, das an die Anfrage angehängt ist.
  3. Google ruft die APIs Ihres Dienstes auf und hängt das Zugriffstoken mit für jede Anfrage. Ihr Dienst überprüft, ob das Zugriffstoken Google autorisiert, auf die API zuzugreifen und dann den API-Aufruf abzuschließen.

Autorisierungsanfragen verarbeiten

Wenn eine Google-Anwendung die Kontoverknüpfung über OAuth 2.0 durchführen muss impliziten Vorgang ab, sendet Google den Nutzer mit einer -Anfrage mit den folgenden Parametern:

Parameter des Autorisierungsendpunkts
client_id Die Client-ID, die Sie Google zugewiesen haben.
redirect_uri Die URL, an die Sie die Antwort auf diese Anfrage senden.
state Buchhaltungswert, der unverändert an Google zurückgegeben wird Weiterleitungs-URI.
response_type Der Werttyp, der in der Antwort zurückgegeben werden soll. Für den impliziten OAuth 2.0-Code ist der Antworttyp immer token.
user_locale Die Spracheinstellung des Google-Kontos in RFC5646 -Format, mit dem Ihre Inhalte in die bevorzugte Sprache des Nutzers lokalisiert werden.

Wenn Ihr Autorisierungsendpunkt z. B. unter https://myservice.example.com/auth, kann eine Anfrage so aussehen:

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token&user_locale=LOCALE

Damit der Autorisierungsendpunkt Anmeldeanfragen verarbeiten kann, musst du Folgendes tun: Schritte:

  1. Prüfen Sie die Werte client_id und redirect_uri, um So verhindern Sie, dass unbeabsichtigte oder falsch konfigurierte Client-Apps Zugriff gewährt werden:

    • Prüfen Sie, ob die client_id mit Ihrer Client-ID übereinstimmt die Google zugewiesen sind.
    • Prüfen Sie, ob die in redirect_uri angegebene URL hat das folgende Format:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  2. Prüfen Sie, ob der Nutzer in Ihrem Dienst angemeldet ist. Wenn der Nutzer nicht angemeldet ist angemeldet haben, müssen Sie den Anmelde- bzw. Anmeldevorgang für den Dienst abschließen.

  3. Generieren Sie ein Zugriffstoken, mit dem Google auf Ihre API zugreifen kann. Die Zugriffstoken kann ein beliebiger Stringwert sein, muss aber den Wert Nutzer und den Client, für den das Token bestimmt ist, und darf nicht erraten werden.

  4. Eine HTTP-Antwort senden, die den Browser des Nutzers an die URL weiterleitet redirect_uri wird angegeben. Schließen Sie alle folgende Parameter im URL-Fragment:

    • access_token: Das Zugriffstoken, das Sie gerade generiert haben.
    • token_type: der String bearer
    • state: der unveränderte Statuswert aus dem Original Anfrage

    Hier ein Beispiel für die resultierende URL:

    https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

Der OAuth 2.0-Weiterleitungs-Handler von Google empfängt das Zugriffstoken und bestätigt dass sich der Wert für state nicht geändert hat. Nachdem Google eine Zugriffstoken für Ihren Dienst verwendet, hängt Google das Token an nachfolgende Aufrufe an. zu Ihren Dienst-APIs hinzu.

userinfo-Anfragen verarbeiten

Der userinfo-Endpunkt ist eine geschützte OAuth 2.0-Ressource, die Ansprüche über den verknüpften Nutzer zurückgibt. Die Implementierung und das Hosten des userinfo-Endpunkts sind mit Ausnahme der folgenden Anwendungsfälle optional:

Nachdem das Zugriffstoken erfolgreich von Ihrem Tokenendpunkt abgerufen wurde, sendet Google eine Anfrage an Ihren userinfo-Endpunkt, um grundlegende Profilinformationen über den verknüpften Nutzer abzurufen.

Anfrageheader für userinfo-Endpunkt
Authorization header Das Zugriffstoken vom Typ „Bearer“.

Wenn Ihr userinfo-Endpunkt beispielsweise unter https://myservice.example.com/userinfo, kann eine Anfrage so aussehen:

GET /userinfo HTTP/1.1
Host: myservice.example.com
Authorization: Bearer ACCESS_TOKEN

Führen Sie die folgenden Schritte aus, damit der userinfo-Endpunkt Anfragen verarbeiten kann:

  1. Extrahieren Sie das Zugriffstoken aus dem Autorisierungs-Header und geben Sie Informationen für den Nutzer zurück, der mit dem Zugriffstoken verknüpft ist.
  2. Wenn das Zugriffstoken ungültig ist, gib den Fehler „HTTP 401 Unauthorized“ mit dem Antwortheader WWW-Authenticate zurück. Hier ist ein Beispiel für eine Userinfo-Fehlerantwort:
    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: error="invalid_token",
    error_description="The Access Token expired"
    
    Wenn während des Verknüpfungsvorgangs der Fehler „401 Nicht autorisiert“ oder eine andere fehlgeschlagene Fehlermeldung zurückgegeben wird, kann der Fehler nicht behoben werden. Das abgerufene Token wird verworfen und der Nutzer muss den Verknüpfungsvorgang noch einmal starten.
  3. Wenn das Zugriffstoken gültig ist, geben Sie eine HTTP 200-Antwort mit dem folgenden JSON-Objekt im Text des HTTPS-Objekts zurück. Antwort:

    {
    "sub": "USER_UUID",
    "email": "EMAIL_ADDRESS",
    "given_name": "FIRST_NAME",
    "family_name": "LAST_NAME",
    "name": "FULL_NAME",
    "picture": "PROFILE_PICTURE",
    }
    
    Wenn der userinfo-Endpunkt eine HTTP 200-Erfolgsantwort zurückgibt, werden das abgerufene Token und die Anforderungen im Google-Konto des Nutzers registriert.

    Userinfo-Endpunktantwort
    sub Eine eindeutige ID, die den Nutzer in Ihrem System identifiziert.
    email E-Mail-Adresse des Nutzers
    given_name Optional:Vorname des Nutzers.
    family_name Optional:Nachname des Nutzers.
    name Optional:Vollständiger Name des Nutzers.
    picture Optional:Profilbild des Nutzers.

Implementierung validieren

Sie können Ihre Implementierung mithilfe der Validierung OAuth 2.0 Spielplatz - Tool.

Führen Sie im Tool die folgenden Schritte aus:

  1. Klicken Sie auf das OAuth 2.0 - Konfigurationsfenster zu öffnen.
  2. Im OAuth Strömungsfeld, wählen Sie Client-Seite.
  3. Im OAuth Endpunkte Feld wählen Sie Benutzerdefiniert.
  4. Geben Sie Ihren OAuth 2.0-Endpunkt und die Client-ID, die Sie Google zugewiesen haben, in die entsprechenden Felder ein.
  5. Im Schritt 1 Wählen Sie im Abschnitt keine Google Bereiche. Lassen Sie stattdessen dieses Feld leer oder geben Sie einen für Ihren Server gültigen Bereich ein (oder eine beliebige Zeichenfolge, wenn Sie keine OAuth-Bereiche verwenden). Wenn Sie fertig sind, klicken Sie auf Autorisieren APIs.
  6. In der Stufe 2 und Stufe 3 Abschnitte, geht durch die OAuth 2.0 fließen und sicherzustellen , dass jeder Schritt wie vorgesehen funktioniert.

Sie können Ihre Implementierung mithilfe der Validierung Google - Konto verknüpfen Demo - Tool.

Führen Sie im Tool die folgenden Schritte aus:

  1. Klicken Sie auf die Sign-in mit Google - Taste.
  2. Wählen Sie das Konto aus, das Sie verknüpfen möchten.
  3. Geben Sie die Service-ID ein.
  4. Geben Sie optional einen oder mehrere Bereiche ein, für die Sie Zugriff anfordern.
  5. Klicken Sie auf Start Demo.
  6. Wenn Sie dazu aufgefordert werden, bestätigen Sie, dass Sie der Verknüpfungsanfrage zustimmen und diese ablehnen können.
  7. Bestätigen Sie, dass Sie zu Ihrer Plattform weitergeleitet werden.