Google App Engine Java - федеративный вход, что хранить в хранилище данных - PullRequest
5 голосов
/ 26 января 2011

Я создаю приложение Google App Engine для Java с использованием федеративного входа в систему.

Когда пользователь вошел в мое приложение с помощью поставщика OAuth, я получил объект User [http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/User.html].

]

Я хочу сохранить ссылку на этого пользователя в хранилище данных. Тем не менее, что я использую в качестве уникального ключа? Это getFederatedIdentity () или getUserId ()? Вряд ли есть какой-либо JavaDoc. Очевидно, что когда пользователь впоследствии входит в мое приложение, я хочу получить объект, который я сохранил в хранилище данных.

Я понимаю поле federatedIdentity, которое, как я понимаю, должно всегда заполняться (я разрешаю только федеративные входы в систему). Однако, если это поле используется для связывания моих данных с вошедшим в систему пользователем, тогда Google оставляет это поле пустым при тестировании на локальном сервере ... так что это не будет особенно полезным.

Что такое поле getUserId - как его устанавливает Google? Будет ли гарантировано, что он останется прежним, если федеративный идентификатор пользователя останется прежним?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Из пользователей Java Обзор API

Когда пользователь входит в приложение, приложение может получать доступ к адресу электронной почты учетной записи или идентификатору OpenID для каждого запроса, который пользователь делает в приложении. Приложение может также получить доступ к идентификатору пользователя, который уникально идентифицирует пользователя, даже если пользователь меняет адрес электронной почты для своей учетной записи.

звучит как getUserId() - лучший выбор.

0 голосов
/ 27 января 2011

Вам также не нужно хранить данные - вы можете хранить объект User непосредственно в хранилище данных. См. здесь для списка поддерживаемых типов объектов.

...