繁体   English   中英

春季社交Facebook-单个Facebook实例

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM