[英]spring social Facebook - single Facebook Instance
我刚刚使用最新的spring social和spring social Facebook(和spring boot)创建了一个项目。
我正在尝试实现一个Facebook注册,该注册工作正常,但每次都为第一个连接的用户返回相同的连接/配置文件。
我的Facebook个人资料控制器是:
@RestController
@RequestMapping(path = "/api/unsecure/facebook")
public class FacebookProfileController implements Serializable {
private static final long serialVersionUID = 1895700328147293496L;
@Autowired
private Facebook facebook;
@RequestMapping(path = "/profile", method = RequestMethod.GET)
public Result<FBUserVO> getUserFBProfile() {
if (!facebook.isAuthorized()) {
return ResultFactory.getFailResult("Facebook signup failed!");
}
FBUserVO user = FBUserToFBUserVO.INSTANCE.apply(facebook.userOperations().getUserProfile());
PagedList<Reference> friends = facebook.friendOperations().getFriends();
if (!friends.isEmpty()) {
user.setFriendsMessage("You have " + friends.size() + " friends playing. Join Now!");
}
return ResultFactory.getSuccessResult(user);
}
}
这是第一次工作...之后,即使我在调试FacebookTemplate类时,每次也会返回相同的配置文件信息,这是使用新用户的new / valid access_token创建的,但由于某些原因,URL是使用旧令牌创建的。 我尝试调试网址,但它们似乎未发送任何访问令牌。
我在这里做错什么吗? 我可以通过其他方式获得当前连接吗?
您必须使用ConnectionRepository类(该类允许删除第一个导致您出现问题的登录用户的Facebook提供程序现有连接)。
使用这样的构造函数,并消除Facebook自动装配:
private ConnectionRepository connectionRepository;
@Inject
public FacebookProfileController(ConnectionRepository connectionRepository) {
this.connectionRepository = connectionRepository;
}
通过connectionRepository实例,您可以通过执行以下操作获取当前登录用户的Facebook对象:
connectionRepository.findPrimaryConnection(Facebook.class).getApi()
注意:要检查用户是否未通过身份验证,您需要使用:
connectionRepository.findPrimaryConnection(Facebook.class)==null
完成为当前登录用户提取数据后,必须使用以下说明才能删除通过构造函数创建的持久连接:
connectionRepository.removeConnections("facebook");
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.