特定于java的ID不接受RestFB for Facebook中的我的访问令牌
我尝试通过restfbapi获取多个对象。我有一个ID列表(端点?)并希望它们通过RestFB批量获取。因此,我使用FacebookClient.fetchObjects()
。现在出现的问题是,我列表中的一个ID似乎不接受令牌。我不喜欢facebook的代币系统。我生成的唯一令牌是应用令牌
列表中使用的两个ID:
working ID: 1104054513000418
not working ID: 1106761186063084
这些ID属于来自同一作者的帖子,它们之间没有真正的区别,只是内容不同
试图通过这些ID手动获取数据(无批量获取)我也有同样的问题。因此,多取方法的误用并不是一个问题
代码:
FacebookClient.AccessToken accessToken = new DefaultFacebookClient().obtainAppAccessToken(appId, appSecurity);
FacebookClient fbClient = new DefaultFacebookClient(accessToken.getAccessToken());
// consider filteredSocialItems as given
List<String> filteredItemIDs = filteredSocialItems.stream()
.map({ item -> item.properties.get("sourceId") })
.collect(Collectors.toList());
JsonObject json = fbClient.fetchObjects(filteredItemIDs, JsonObject.class, Parameter.with("fields", "name,id"));
例外情况:
Caught: com.restfb.exception.FacebookOAuthException: Received Facebook error response of type OAuthException: (#100) Requires user session (code 100, subcode null)
com.restfb.exception.FacebookOAuthException: Received Facebook error response of type OAuthException: (#100) Requires user session (code 100, subcode null)
at com.restfb.DefaultFacebookClient$DefaultGraphFacebookExceptionMapper.exceptionForTypeAndMessage(DefaultFacebookClient.java:1201)
at com.restfb.DefaultFacebookClient.throwFacebookResponseStatusExceptionIfNecessary(DefaultFacebookClient.java:1122)
at com.restfb.DefaultFacebookClient.makeRequestAndProcessResponse(DefaultFacebookClient.java:1063)
at com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:974)
at com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:936)
at com.restfb.DefaultFacebookClient.fetchObjects(DefaultFacebookClient.java:431)
at facebookImageRefresh.run(facebookImageRefresh.groovy:48)
at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:48)
# 1 楼答案
解决这个问题有点累。这是一个老版本facebook应用程序的问题
自从Facebook改变了大量的API规则,问题就出在这里。您不能像使用
1104054513000418
那样仅通过其ID访问帖子。您还必须在创建该帖子的页面/用户的ID前面加前缀。因此,如果您的页面ID为589476469431696
,您实际上需要创建一个组合ID,例如589476469431696_1104054513000418
->"{page_id}_{post_id}"
。我不知道这是否可以互换因此,在创建了一个新的应用程序后,我能够让它工作
另一个信息:当我一直在寻找用户访问令牌时,我在我的facebook应用程序高级设置中找到了它。但我似乎不再需要它了