0

我已经实现了 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 值。

谁能给我一些我缺少的东西的指示。

4

1 回答 1

0

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

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

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

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

于 2016-02-23T14:25:34.887 回答