App Engine Java - в настоящее время используется объединенный вход / Openid - как сохранить успешно прошедшего аутентификацию пользователя Facebook?

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

6
задан jmort253 12 January 2012 в 00:33
поделиться