Java阅读Facebook墙

Java阅读Facebook墙,java,facebook,facebook-graph-api,spring-social,Java,Facebook,Facebook Graph Api,Spring Social,我正在使用Java构建一个web门户;除了其他要求外,我还在苦苦思索一个非常简单的要求(至少是第一眼看到的): 我的客户希望在他的门户网站上发布他的facebook墙的前N条帖子 他想阅读他的推特页面的前N条推特 因为我的java代码是基于Spring的,所以我想使用Spring social、Spring social twitter和Spring social facebook来满足需求 在推特上我没有问题;其实我 在twitter上创建了一个应用程序 获取twitter应用程序id和应用

我正在使用Java构建一个web门户;除了其他要求外,我还在苦苦思索一个非常简单的要求(至少是第一眼看到的): 我的客户希望在他的门户网站上发布他的facebook墙的前N条帖子 他想阅读他的推特页面的前N条推特

因为我的java代码是基于Spring的,所以我想使用Spring social、Spring social twitter和Spring social facebook来满足需求

在推特上我没有问题;其实我

  • 在twitter上创建了一个应用程序
  • 获取twitter应用程序id和应用程序机密
  • 预备代码
在几个小时内,一切都很顺利

facebook的问题与生俱来,很多时候我都在与之抗争 我从SpringSocial转到了facebook4j(因为我觉得最后一个更强大)。 我做了以下几件事

  • 在FB上创建了一个应用程序
  • 获得facebook appId和appSecret
  • 告诉代码我需要读取流权限
  • 编写代码
但是我不能从我的墙上读帖子 有没有人能够满足这种情况? 这里是我的facebook4j代码

private static final Logger log = LoggerFactory.getLogger(FacebookTest.class.getName());
public static void main (String[] a)
{
    try
    {
        ConfigurationBuilder cfgBui = new ConfigurationBuilder();
        cfgBui.setDebugEnabled(true);
        cfgBui.setOAuthAppId(myAppId);
        cfgBui.setOAuthAppSecret(myAppSecret);
        cfgBui.setUseSSL(true);
        Configuration cfg = cfgBui.build();
        FacebookFactory ff = new FacebookFactory(cfg);
        OAuthSupport support = new OAuthAuthorization(cfg);
        support.setOAuthPermissions("read_stream");
        AccessToken appAccessToken = support.getOAuthAppAccessToken();
        Facebook face = ff.getInstance(appAccessToken );
        ResponseList<Post> posts = face.searchPosts("test");
        for (Post post : posts)
        {
            System.out.println(post.getId());
        }
    } catch (Exception e)
    {
        log.error("Errore", e);
    }
}
private static final Logger log=LoggerFactory.getLogger(FacebookTest.class.getName());
公共静态void main(字符串[]a)
{
尝试
{
ConfigurationBuilder cfgBui=新的ConfigurationBuilder();
cfgBui.setDebugEnabled(true);
cfgBui.setOAuthAppId(myAppId);
cfgBui.setOAuthAppSecret(myAppSecret);
cfgBui.setusesl(true);
配置cfg=cfgBui.build();
FacebookFactory ff=新的FacebookFactory(cfg);
OAuthSupport=新的OAuthAuthorization(cfg);
support.setOAuthPermissions(“读取流”);
AccessToken appAccessToken=support.getOAuthAppAccessToken();
FacebookFace=ff.getInstance(appAccessToken);
ResponseList posts=face.searchPosts(“测试”);
用于(职位:职位)
{
System.out.println(post.getId());
}
}捕获(例外e)
{
日志错误(“错误”,e);
}
}
据我所知,我应该需要用户访问令牌,但我不知道如何生成它;我应该创建一个登录流并向用户显示FB登录对话框吗?如果是这样,我为什么要创建应用程序id和应用程序机密?他们对我的设想毫无意义 此外……在我的情况下……服务器端应该在FB上进行身份验证,并阅读来自知名用户墙(我客户的墙)的帖子……那么……我应该在哪里显示登录对话框?在FB登录后,我应该重定向到哪里


是否有任何好人:)谁能向我澄清FB read post流?

您必须使用其中一种可能性来授权用户(使用read_流)才能访问他的流。以下是所有可能性的链接:

您还可以使用Graph API Explorer生成访问令牌:

有关访问令牌以及如何生成它们的详细信息,请参见以下链接:

请记住,扩展用户令牌仅持续60天,之后您的客户必须手动刷新它。一般来说,由于商业原因,您不允许使用用户配置文件,在网站上显示用户流是非常罕见的


更好:使用Facebook页面
/page id/feed
具有永久性的扩展页面令牌。

您必须使用其中一种可能性来授权用户(使用读取流)才能访问其流。以下是所有可能性的链接:

您还可以使用Graph API Explorer生成访问令牌:

有关访问令牌以及如何生成它们的详细信息,请参见以下链接:

请记住,扩展用户令牌仅持续60天,之后您的客户必须手动刷新它。一般来说,由于商业原因,您不允许使用用户配置文件,在网站上显示用户流是非常罕见的


更好:使用Facebook页面
/page id/feed
带有永久的扩展页面令牌。

如果您使用spring social facebook,您可以让用户通过(前端登录流)登录,然后您可以访问用户墙。但是,用户需要登录并授权您的应用程序来执行操作

下面是一个spring社交示例项目,演示了spring社交facebook登录的过程

此外,在java代码中,您可以使用feedoperations来收集有关home feed的信息,并对其进行查询。签出文档

    facebook.feedOperations().

如果您使用SpringSocialFacebook,您可以让用户通过(前端登录流)登录,然后您可以访问用户墙。但是,用户需要登录并授权您的应用程序来执行操作

下面是一个spring社交示例项目,演示了spring社交facebook登录的过程

此外,在java代码中,您可以使用feedoperations来收集有关home feed的信息,并对其进行查询。签出文档

    facebook.feedOperations().

谢谢你的回答;因此,在任何情况下,facebook都不足以获得appId和appSecretId;我们总是(或在需要时)应该登录并生成一个用户访问令牌……我对Facebook页面的想法很感兴趣,但我不知道它是如何工作的……我将尝试调查。谢谢你的回答;因此,在任何情况下,facebook都不足以获得appId和appSecretId;我们总是(或在需要的时候)应该登录并生成一个用户访问令牌……我对Facebook页面的想法很感兴趣,但我不知道它是如何运作的……我将尝试进行调查。谢谢你,保罗,我已经看到了spring社交示例和feedOperations;遗憾的是,正如我之前所说,我不喜欢的是,我总是应该登录才能获得用户令牌。我将尝试使用PageOperations,尽管我看不到任何读取方法