我正在使用Java构建一个Web门户;除了其他要求之外,我正在苦苦思索一个非常简单(至少在初看)的要求: 我的客户想在他的门户网站上找到他的Facebook墙上的前N个帖子 他想阅读他的推特页面的前N条推文
由于我的java代码基于Spring,我想使用spring social,spring social twitter和spring social facebook以满足要求
使用Twitter我没有问题;事实上我
在几个小时内,一切都很顺利
问题出现在facebook上,很多时候我都在与它抗争 我从春季社交传递到facebook4j(因为这最后一个似乎对我更强)。 我做了以下
但是我无法从墙上阅读帖子 有没有人能够满足这种情况? 这是我的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阅读后期流程?
答案 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().