我的Google App Engine Java应用程序很好地使用openid/federated登录.
我保存了一个UserProfile对象,一旦我们有一个登录用户保存对UserService.getCurrentUser()对象(及其用户ID)的引用,我就会这样保存:
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();
}
Run Code Online (Sandbox Code Playgroud)
嗯,这一切都在极好地工作.我正在使用openId选择器,并使用一堆不同的openid提供程序登录到应用程序.没有问题.
现在,我想让人们使用他们的facebook登录,我也有这个部分.我正在使用服务器端身份验证流程.我能够完成授权并检索访问令牌,我正在使用restFB.我可以连接到图形api并获得我需要的任何东西.
所以我的问题是:我不知道最好的方法是获取这些信息并让我的应用知道有人登录了.
我假设Userservice.getCurrentUser()是不行的.
我看到OauthService.getCurrentUser().如果"知道"我有一个Facebook用户登录,那将是非常棒的.然后我的用户检查就是:
User user = UserService.getCurrentUser()
if(user == null)
{
user = OAuthService.getCurrentUser();
}
Run Code Online (Sandbox Code Playgroud)
我快乐地走了.
但是,我没有看到用OAuthService或任何东西注册我的Facebook用户的方法.
我确信之前已经完成了.
我该怎么办呢?有没有一种可爱的方式来做到这一点,或者我是否坚持开启会话并为我的Facebook用户制作自定义用户对象并将其粘贴在会话中并运行过滤器?