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



我已经实现了 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,但是当我打印有关我朋友列表的信息时,它没有显示任何内容。它具有空值。

谁能给我一些我错过的东西的指示。

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

您的朋友甚至不会出现在getFriendProfiles()的结果中,如果他们自己没有授权您的应用程序访问他们的个人资料。在Facebook Graph API v2.0之前,你可以获取用户的所有朋友,但这种情况发生了变化,现在你只能得到也使用同一应用程序的朋友。

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

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

最新更新