Java阅读Facebook Wall

时间:2015-03-14 08:33:12

标签: java facebook facebook-graph-api spring-social

我正在使用Java构建一个Web门户;除了其他要求之外,我正在苦苦思索一个非常简单(至少在初看)的要求: 我的客户想在他的门户网站上找到他的Facebook墙上的前N个帖子 他想阅读他的推特页面的前N条推文

由于我的java代码基于Spring,我想使用spring social,spring social twitter和spring social facebook以满足要求

使用Twitter我没有问题;事实上我

  • 在twitter上创建了一个应用
  • 获得了Twitter app app和app secret
  • 准备好的代码

在几个小时内,一切都很顺利

问题出现在facebook上,很多时候我都在与它抗争 我从春季社交传递到facebook4j(因为这最后一个似乎对我更强)。 我做了以下

  • 在FB上创建了一个应用
  • 获得了facebook appId和appSecret
  • 告诉代码我需要read_stream权限
  • 准备了代码

但是我无法从墙上阅读帖子 有没有人能够满足这种情况? 这是我的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);
    }
}

据我所知,我应该需要用户访问令牌,但我不知道如何生成它;我应该创建登录流程并向用户显示FB登录对话框吗?如果是这样,我为什么要创建app id和app secret?他们在我的场景中毫无意义 此外......在我的情况下......服务器端应该在FB上进行身份验证,并从知名用户墙(我的客户的墙壁......)阅读帖子,以便....我应该在哪里提供登录对话框?在FB登录后我应该在哪里重定向?

有没有好人:)谁可以向我澄清FB阅读后期流程?

2 个答案:

答案 0 :(得分:3)

您必须使用其中一种可能性来授权用户(使用read_stream)以访问其流。以下是所有可能性的链接:https://developers.facebook.com/docs/facebook-login/v2.2

您还可以使用Graph API Explorer生成访问令牌:https://developers.facebook.com/tools/explorer/

有关访问令牌及其生成方法的详细信息,请参阅以下链接:

请记住,扩展用户令牌只能持续60天,之后您的客户必须手动刷新它。一般情况下,出于商业原因,您不能使用用户配置文件,在网站上显示用户流是非常不寻常的。

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

答案 1 :(得分:1)

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

这是一个春季社交示例项目,演示了如何完成spring-social-facebook登录https://github.com/spring-projects/spring-social-samples

此外,在您的Java代码中,您可以使用Feed操作来收集有关主页Feed的信息,并对其进行查询。查看文档。

    facebook.feedOperations().