我想从特定页面中提取用户信息(年龄,位置等)。 例如:我的搜索字符串是“obama”。所以我想要在 obama 的特定页面中喜欢或评论过的所有用户的信息。
我能够在某种程度上通过以下方式实现这一目标:
public static String getFacebookPostes(Facebook facebook, String searchPost)
throws FacebookException {
String searchResult = "Item : " + searchPost + "\n";
StringBuilder searchMessage = new StringBuilder();
ResponseList<Post> results = facebook.getPosts(searchPost);
//facebook.getFriends(new Reading().fields("gender"));
/*System.out.println("success");
System.out.println(facebook.getMe().getFirstName());*/
String userId="";
for (Post post : results) {
System.out.println(post.getMessage());
searchMessage.append(post.getMessage() + "\n");
for (int j = 0; j < post.getComments().size(); j++) {
searchMessage.append(post.getComments().get(j).getFrom()
.getName()
+ ", ");
searchMessage.append(post.getComments().get(j).getMessage()
+ ", ");
searchMessage.append(post.getComments().get(j).getCreatedTime()
+ ", ");
searchMessage.append(post.getComments().get(j).getLikeCount()
+ "\n");
userId=post.getComments().get(j).getFrom().getId();
User user = facebook.getUser(userId);
System.out.println(user);
}
}
searchResult = searchResult + searchMessage.toString();
System.out.println(searchMessage.toString());
return searchResult;
}
参考网址:http://www.devx.com/Java/how-to-integrate-facebook-and-twitter-with-java-applications.html
但这只给我名称,用户名,性别,区域设置,个人资料链接.. 它为我提供了位置,生日,电子邮件的空值..
通过谷歌搜索,有些人建议“这一切都取决于用户公开的信息”。所以我创建了一个测试帐户,并将所有信息公开并在obama页面上发表评论。它显示我公开的信息,电子邮件和生日除外。我如何提取这两个参数?
感谢任何帮助,建议和指导。
PS :我使用的是eclipse kepler和 facebook4j-core-2.0.2
答案 0 :(得分:0)
确保您设置了正确的OAuthPermissions,例如email,user_birthday,read_stream等。
的 configurationBuilder.setOAuthPermissions("email, publish_stream, id, name, first_name, last_name, read_stream , generic");
强> 的
答案 1 :(得分:0)
试试这个......
使用FacebookClient对象....从 Facebook开发者工具获取访问令牌,并在fetchobject()中传递用户名.....您可以提取来自网址的用户名使用某种正则表达式或其他方法....
N.B : - 结果取决于所有字段都公开的事实......
public static FacebookClient facebookClient;
public static void main(String[] args) throws FacebookException
{
facebookClient = new DefaultFacebookClient("ur access token");
String result= facebookClient.fetchObject("username", String.class);
System.out.println(result);
}
}