【问题标题】:spring social Facebook - single Facebook Instancespring social Facebook - 单个 Facebook 实例
【发布时间】:2016-01-15 02:51:27
【问题描述】:

我刚刚使用最新的 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 类时,这是使用新用户的新/有效 access_token 创建的,但出于某种原因URL 可能是使用旧令牌创建的。我尝试调试网址,但它们似乎没有发送任何访问令牌。

我在这里做错了什么吗?我可以通过其他方式获取当前连接吗?

【问题讨论】:

  • 您是否第二次调试访问令牌以确保已创建新会话?

标签: java spring facebook spring-mvc spring-social


【解决方案1】:

您必须使用 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");

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2015-04-20
    相关资源
    最近更新 更多