3

Google Cloud Endpoints имеет свой собственный процесс аутентификации, в котором метод конечной точки бэкэнд просто передается объекту com.google.appengine.api.users.User.Можно ли использовать конечные точки Google Cloud, встроенные в проверку подлинности, с помощью API доменов Google+?

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

Google+ Domains API определяет свой собственный процесс аутентификации, чтобы получить com.google.api.client.auth.oauth2.Credential объект. Это позволяет создать объект com.google.api.services.plusDomains.PlusDomain.

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

Как бы интегрировать эти два процесса аутентификации? Это для веб-приложения (Java Script) с бэкэндом Google App Engine (Java).

В идеальной ситуации я хотел бы получить информацию о био/профиле пользователей через мое приложение JS, когда пользователь находится в автономном режиме.

Use Case: У меня есть комментарий, где каждый комментарий имеет автора, сохраненный в Хранилище данных Google, как объект com.google.appengine.api.users.User. Однако, когда я создаю поток комментариев в своем веб-приложении JS, я хотел бы показать изображение профиля для каждого автора. Если бы я мог позвонить из веб-приложения, чтобы получить биографию для каждого комментатора, я мог бы сэкономить на бэкэнде много работы. Веб-приложение будет иметь пользовательский объект как JSON. Который включает идентификатор пользователя и адрес электронной почты.

+1

Можете вложить дополнительные детали в свой прецедент? Обычно вы передаете объект пользователя конечной точке, а затем, когда пользователь идентифицируется, в конечной точке используется учетная запись службы, действующая от имени этого пользователя. –

+0

@NikitaUchaev У меня есть стандартная аутентификация конечных точек. Передача объекта пользователя, как вы сказали. Хотите получить биографию для пользователя. Что значит «учетная запись службы, действующая от имени этого пользователя»? Можете ли вы связать код или документацию? –

+0

@ НикитаУчаев. Я понимаю, что вы имеете в виду, когда вопрос остается неясным. Я обновил вопрос. Надеюсь, это поможет. –

ответ

3

Итак, ваш вариант использования является:

  • пользователям проверить подлинность вашего приложения, предоставляя основную userinfo.profile объем, необходимый для получения com.google.appengine.api.users.User объекта правильно принятого в конечных точек API
  • вы сохраняются эти Пользователь объекты в БД, и при извлечении их для отображения нити они комментировали, вы хотели бы, чтобы позвонить в Google + API people.get method, чтобы получить их аватар URL

решения: если ваш пользователям был предоставлен поток oauth, который предоставил им the scope required для вызова google + API (область profile) в дополнение к области регулярных конечных точек «userinfo.profile», не нужно было бы вызывать API Google+, либо из JS клиента или из Java, используя клиентские библиотеки Google API, после прохождения этого потока для получения учетных данных.

Чтобы избежать повторной аутентификации их каждый раз, вы должны serialize and store a credentials object from the language in question, или вы даже можете просто отслеживать токен обновления для своего гранта и пройти через низкоуровневый танец OAuth, чтобы получить новый токен доступа (вы Вероятно, я захочу сделать первое, так как это делает это для вас).

Как указано elsewhere в Интернете (в некоторых других местах), идентификатор пользователя from the User object не совпадает с идентификатором профиля Google+, поэтому имейте это в виду при работе с параметрами объекта endpoints User objects. Поэтому вы не сможете использовать идентификатор пользователя из объекта User для вызова people.get.

Вместо этого вы должны сохранить идентификатор профиля Google+ пользователя в то время, когда они сначала signed-in или, по крайней мере, прошли через поток oauth, который предоставил необходимую область Google+, рядом с объектом User, который вы уже использовали.Вы должны будете использовать (или) сериализованные объекты учетных данных или токены обновления/доступа для вызова API Google+, как только вы получите идентификатор профиля Google+ из модели данных каждого пользователя в своем хранилище (независимо от того, какое решение вы используете, от Datastore до SQL, и т. д.)

+1

Благодарим вас за то, что идентификатор профиля Google+ не совпадает с идентификатором учетной записи пользователя Google. –

Смежные вопросы