能够使用Spring Social访问我自己的Facebook信息,但不能访问我的朋友列表信息

时间:2016-02-22 11:32:31

标签: spring spring-boot spring-social spring-social-facebook spring-social-twitter

我已经实现了spring控制器来获取有关我朋友列表的所有信息。实施如下:

 @RequestMapping(value = "/getFbContactList/{accessToken}", method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
public String fbContactList(@PathVariable String accessToken) {
    //accessToken recieved from facebook after OAuth authorization
    Facebook facebook = new FacebookTemplate(accessToken); 
    System.out.println("User's FaceBook Profile Id::"+facebook.userOperations().getUserProfile().getId());
    System.out.println("User's FaceBook UserName::"+facebook.userOperations().getUserProfile().getName());
    System.out.println("User's FaceBook UserEmail::"+facebook.userOperations().getUserProfile().getEmail());
    List<User> friends = facebook.friendOperations().getFriendProfiles();

    for(User user : friends) {
        System.out.println("User Email::" + user.getEmail());
    }
     return friends.toString(); 
}

问题是我能够获取我自己的信息,例如个人资料ID,用户名,电子邮件,DOB,但是当我打印有关我朋友列表的信息时,它没有显示任何内容。它具有NULL值。

任何人都可以给我一些指示,我错过了一些东西。

1 个答案:

答案 0 :(得分:0)

这很大程度上取决于你的朋友&#39;隐私设置以及这些朋友是否也使用/授权了您的应用。

如果他们自己没有授权您的应用访问其个人资料,那么您的朋友甚至不会参与getFriendProfiles()的搜索结果。在Facebook Graph API v2.0之前,您可以获取所有用户的朋友,但这已经改变了,现在您只能找到使用相同应用的朋友。

一旦你结识了这些朋友,无论有什么隐私设置,都有一些应用程序无法访问的字段。我不记得,但我相信电子邮件可能就是其中之一。此外,如果您的某个朋友已锁定其隐私设置,您也无法看到许多其他字段。对于您的应用无权查看字段的情况,它将返回null。

另一方面......如果您使用有效的访问令牌并在浏览器中请求https://graph.facebook.com/me/friends?access_token= {{YOUR TOKEN}}或使用curl或其他客户端,您实际上会看到您的朋友&#39 ;数据,那么很可能是Spring Social Facebook中的一个错误。但如果你没有看到这些数据,那么SSFB就无法为你获取这些数据。