У меня есть 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 и вставляя его в сеанс и запуская фильтр?