У меня есть Java-приложение Google App Engine, прекрасно работающее, используя openid / federated login.
Я сохраняю объект UserProfile, который сохраняется, когда у нас есть зарегистрированный пользователь, который сохраняет ссылку на объект UserService.getCurrentUser () (и его идентификатор пользователя) вот так:
UserService userService = UserServiceFactory.getUserService();
user = userService.getCurrentUser();
userId = user.getUserId();
profile = UserProfileBin.getInstance().getByUserId(user.getUserId());
if (profile == null) {
profile = new UserProfile();
profile.setUser(user);
profile.setUserId(user.getUserId());
profile.setCreatedDate(new Date());
pm.makePersistent(profile);
id = profile.getId().getId();
}
Ну, это все работает фантастически. Я использую селектор openId и вхожу в приложение, используя несколько разных провайдеров openid. Нет проблем.
Теперь , я хочу, чтобы люди использовали свои логины в facebook, и эта часть у меня тоже работает. Я использую поток аутентификации на стороне сервера. Я могу завершить авторизацию и получить токен доступа, и я использую restFB. Я могу подключиться к api графа и получить все, что мне нужно.
Итак, мой вопрос: я не Я не знаю, как лучше всего взять эту информацию и сообщить моему приложению, что кто-то вошел в систему.
Я полагаю, Userservice.getCurrentUser () - это не годится.
Я вижу OauthService.getCurrentUser (). Было бы здорово, если бы он «знал», что у меня есть пользователь Facebook. Тогда мои пользовательские проверки будут примерно такими:
User user = UserService.getCurrentUser()
if(user == null)
{
user = OAuthService.getCurrentUser();
}
, и я бы весело поехал.
Однако я не знаю ' Я не вижу способа зарегистрировать моего пользователя Facebook с помощью службы OAuthService или чего-то еще.
Я уверен, что это уже делалось раньше.
Как мне это сделать? Есть ли красивый способ сделать это, или я застрял при включении сеансов и создании настраиваемого объекта пользователя для моего пользователя Facebook и вставке его в сеансе и запуске фильтра?