使用java中的facebook4j从特定页面中提取Facebook用户信息

时间:2013-12-10 18:00:51

标签: java eclipse facebook

我想从特定页面中提取用户信息(年龄,位置等)例如:我的搜索字符串是“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

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);

    }
}