我已经实现了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值。
任何人都可以给我一些指示,我错过了一些东西。
答案 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就无法为你获取这些数据。