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

Able to access my own facebook information but not my friend list information using Spring Social

我已经实现了 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、用户名、电子邮件、出生日期,但是当我打印有关我朋友列表的信息时,它没有显示任何内容。它有 NULL 值。

谁能给我一些我遗漏的地方。

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

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

获得这些朋友后,无论采用何种隐私设置,应用程序都无法访问某些字段。我不记得了,但我相信电子邮件可能是其中之一。此外,如果您的一位朋友锁定了他们的隐私设置,您也将无法看到许多其他字段。对于您的应用无权查看某个字段的情况,它将 return 为空。

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