簡體   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