/ / Ist es möglich, Google Cloud Endpoints zu verwenden, die mit der Google+ Domains-API authentifiziert wurden? - Google-App-Engine, Authentifizierung, Google-Plus, Google-Cloud-Endpunkte, Google-Plus-Domains

Ist es möglich, Google Cloud Endpoints zu verwenden, die mit der Google+ Domains-API authentifiziert wurden? - Google-App-Engine, Authentifizierung, Google-Plus, Google-Cloud-Endpunkte, Google-Plus-Domains

Google Cloud Endpoints verfügt über einen eigenen Authentifizierungsprozess, bei dem die Backend-Endpunktmethode einfach übergeben wird com.google.appengine.api.users.User Objekt.

https://cloud.google.com/appengine/docs/java/endpoints/auth

Die Google+ Domains API gibt einen eigenen Authentifizierungsprozess an, um die com.google.api.client.auth.oauth2.Credential Objekt. Dies ermöglicht den Bau der com.google.api.services.plusDomains.PlusDomain Objekt.

https://developers.google.com/+/domains/authentication/

Wie würden Sie diese beiden Authentifizierungsprozesse integrieren? Dies ist für a Web-App (Java Script) mit einem Google App Engine (Java) Backend.

Im Idealfall möchte ich die Benutzer Bio / Profil-Basisinformationen über meine JS-App abrufen können, während der Benutzer offline ist.

Use Case: Ich habe einen Kommentarthread, in dem für jeden Kommentar ein Autor im Google Datastore als com.google.appengine.api.users.User Objekt. Wenn ich jedoch den Kommentarthread in meiner JS Web App rendere, würde ich gerne ein Profilbild für jeden Autor zeigen. Wenn ich einen Anruf von der Web App machen könnte, um die Bio für jeden Kommentator zu erhalten, könnte ich das Backend eine Menge Arbeit sparen. Die Web-App würde das Benutzerobjekt als JSON haben. Dazu gehören die Benutzer-ID und die E-Mail-Adresse.

Antworten:

3 für die Antwort № 1

Also, Ihr Anwendungsfall ist:

  • Ihre Benutzer authentifizieren sich bei Ihrer App und gewähren den grundlegenden userinfo.profile-Bereich, der zum Abrufen des com.google.appengine.api.users.User Objekt ordnungsgemäß in Ihrer Endpoints-API empfangen
  • Sie behalten diese Benutzerobjekte für die DB bei. Wenn Sie sie abrufen, um den Thread anzuzeigen, in dem sie kommentiert haben, möchten Sie die Google + API aufrufen people.get-Methode um ihre Avatar-Bild-URL abzurufen

Die Lösung: Wenn Ihren Benutzern ein OAuth-Flow präsentiert wurde, den sie gewähren der Umfang erforderlich für den Google + API Aufruf (der profile scope) Zusätzlich zu den regulären Endpoints "userinfo.profile" sollte es kein Problem sein, die Google+ API entweder vom JS Kunde oder von der Java Back-End, mit den Google API-Client-Bibliotheken, nachdem Sie diesen Flow durchlaufen, um die Anmeldeinformationen zu erhalten.

Um sie jedes Mal erneut zu authentifizieren, sollten Sie serialisiert und speichert ein Berechtigungsnachweisobjekt aus der fraglichen Spracheoder du könntest einfach den Überblick behaltenAktualisiere den Token für seine Zuteilung und gehe durch den Low-Level-OAuth-Tanz, um einen neuen Zugangstoken zu erhalten (du wirst wahrscheinlich den ersten tun wollen, wie es das für dich tut).

Wie bereits erwähnt anderswo im Web (an mehreren anderen Orten), die Benutzer-ID aus dem Benutzerobjekt ist nicht identisch mit der Google+ Profil-ID. Beachten Sie dies, wenn Sie mit dem Endpunktmethoden-Parameter Benutzerobjekte arbeiten. Daher können Sie die Benutzer-ID des Benutzerobjekts nicht zum Anrufen verwenden people.get.

Stattdessen sollten Sie die Google+ Profil-ID des Benutzers zu dem Zeitpunkt speichern, an dem sie zuerst angezeigt werden angemeldet oder zumindest ging es durch den oauth-FlussDer erforderliche Google+ Bereich wurde neben dem Benutzerobjekt, das Sie bereits verwendet haben, gewährt. Sie müssen die (de) serialisierten Anmeldeobjekte oder Refresh- / Zugriffstoken verwenden, um die Google+ API aufzurufen, sobald Sie die Google+ Profil-ID von jedem abrufen Benutzerdatenmodell in Ihrem Speicher (welche Lösung Sie auch verwenden, von Datastore zu SQL usw.)