1

我正在尝试获取 fb 用户的“朋友列表”和他/她的“关于”,但是当我这样做时,我得到了某些字段的空值,如下面的评论。

System.out.println(loginUser.getId());  //show id
System.out.println(loginUser.getName());  //Show Name
System.out.println(loginUser.getFirstName());  //show null
 System.out.println(loginUser.getGender());  //show null 
System.out.println(loginUser.getAbout());  //show null

我一直在尝试 graph-api explorer 来看看我得到了什么性别 它在这里显示

代码:

String code = request.getParameter("code");

String URLEncodedRedirectURI = URLEncoder.encode("http://localhost:8080/bitspedia-fetchfbfriends/FriendsListServlet");
String MY_ACCESS_TOKEN = "";

String authURL = "https://graph.facebook.com/oauth/access_token?" +
        "client_id=" + FriendsListServlet.APP_ID + "&" +
        "redirect_uri=" + URLEncodedRedirectURI + "&" +
        "client_secret=" + FriendsListServlet.APP_SECRET + "&" +
        "code=" + code;

URL url = new URL(authURL);

String result = readURL(url);
String[] pairs = result.split("&");

for (String pair : pairs) {

    String[] kv = pair.split("=");
    if (kv[0].equals("access_token")) {
        MY_ACCESS_TOKEN = kv[1];
    }
}
FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN, FriendsListServlet.APP_SECRET);
Connection<User> friends = null;

try {
    User loginUser = facebookClient.fetchObject("me", User.class);
    request.setAttribute("loginUser", loginUser);
    friends = facebookClient.fetchConnection("/me/friends", User.class);
    System.out.println(loginUser.getId());  //shows id
    System.out.println(loginUser.getName());  //Shows  name
    System.out.println(loginUser.getFirstName()); //shows null
    System.out.println(loginUser.getWebsite()); //shows null
    System.out.println(loginUser.getAbout()); //shows null

} catch (FacebookException e) {
    e.printStackTrace();
}

List<User> friendsList = friends.getData();
4

1 回答 1

0

它有一个非常小的问题,你没有提供 null 显示值的参数,所以做小的改变它工作正常。

User loginUser = facebookClient.fetchObject("me", `Parameter.with("fields","first_name,last_name,posts")););`
于 2015-12-08T11:21:32.447 回答