Я пытаюсь связать пользователя в моем API конечных точек Google App Engine с пользователем веб-интерфейса Google App Engine, например, страницей .jsp, требующей аутентификации.
Я могу аутентифицироваться для обоих,но в API конечных точек есть пользователь типа
com.google.api.server.spi.auth.common.User
, тогда как в обработчике приложения пользователь имеет тип:
com.google.appengine.api.users.User
Моя проблема заключается в том, что getUserId()
на каждомиз этих двух типов возвращает различное значение.
у каждого есть метод getUserId (), но он отличается для одного и того же пользователя (тот же адрес электронной почты).
Как я могу связатьдва?
Очевидно, что я мог бы использовать адрес электронной почты, но лучшие практики говорят, что лучше этого не делать, поскольку пользователь может корректно изменить свой адрес электронной почты (или иметь несколько).
com.google.api.server.spi.auth.common.User::getUserId()
возвращает 114374052554615681603, тот же идентификатор пользователя, что и в моем Google + профиле , в то время как com.google.appengine.api.users.User::getUserId()
возвращает 113407138228786534305, что отличается, поэтому я догадываюсь, что первое «правильно», а второе«неправильно».
Я пытался сделать
com.google.appengine.api.users.User currentUser = UserServiceFactory.getUserService().getCurrentUser();
из API, но currentUser
- это ноль.
Придя с другой стороны, я мог бы позвонить на https://www.googleapis.com/oauth2/v1/userinfo API для получения профиля со страницы App Engine, но для этого требуется заголовок Авторизация, представляющий вошедшего в систему пользователя, которого у меня нет.
Как я могу жениться на двух, не прибегая к сравнению электронной почтыадрес?