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