我正在努力升级到图形api,我将restfb jar从1.6 (v1.x)升级到1.13(v2.3),我的应用程序做了两件事-- 1)将文档发布到facebook 2) --在该帖子上得到评论。
我对第2部分有问题。为了获取评论,我的应用程序有一个cron作业,它每分钟运行一次,查找给定应用程序id的新的post id是什么,并基于这个选项获取注释,它为此使用了fql,因为它在1.6中得到了支持,但当我正在阅读时,我发现fql对于v2.1和更高版本来说是不可取的。但我在restfb示例中发现,您可以为旧版本2.0创建令牌,并仍然调用如下所示的fql
facebookClient20 = new DefaultFacebookClient(accessToken, Version.VERSION_2_0);
void query() {
List<FqlUser> users =
facebookClient20.executeFqlQuery("SELECT uid, name FROM user WHERE uid=4 or uid=11", FqlUser.class);
out.println("User: " + users);
}我试着做这样的事..。我试过以上的解决方案,但没有奏效,
String wallPost = String.format("SELECT post_id, message, actor_id, created_time, updated_time FROM stream WHERE source_id = %1$s AND actor_id <> %1$s AND created_time > %2$s ORDER BY created_time", userId, lastUpdatedTime);
queries.put("wallPosts", wallPost);
FqlMulti fqlMulti = facebookClient.executeFqlMultiquery(queries,FqlMulti.class);这给了我
com.restfb.exception.FacebookOAuthException:接收OAuthException类型的Facebook错误响应:(#12) fql对于v2.1及更高版本(代码12,(子代码空)在com.restfb.DefaultFacebookClient$DefaultGraphFacebookExceptionMapper.exceptionForTypeAndMessage(DefaultFacebookClient.java:1239) at com.restfb.DefaultFacebookClient.throwFacebookResponseStatusExceptionIfNecessary(DefaultFacebookClient.java:1154) at com.restfb.DefaultFacebookClient.makeRequestAndProcessResponse(DefaultFacebookClient.java:1087) at com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:998) at com.restfb.DefaultFacebookClient.executeFqlMultiquery(DefaultFacebookClient.java:615) at com.piersystem.connectors.facebook.FacebookConnector.processIncoming(FacebookConnector.java:142)
所以我的问题是:
( 1)对于这种情况,restfb文档没有在限制中说明这一点,2)替代方法是什么。
发布于 2015-08-25 12:58:56
你应该看看你的Facebook应用程序。该版本似乎不是您喜欢使用的2.0版本。如果你有一个新的facebook应用程序,就会出现这种情况,因为不支持旧的图形版本。RestFB只能定义首选版本,但Facebook可能会覆盖它。
为什么不使用RestFB的1.14.0版本呢?
https://stackoverflow.com/questions/32149320
复制相似问题