有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

特定于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) 个答案

  1. # 1 楼答案

    解决这个问题有点累。这是一个老版本facebook应用程序的问题

    Facebook apps are created within your Facebook developer account

    自从Facebook改变了大量的API规则,问题就出在这里。您不能像使用1104054513000418那样仅通过其ID访问帖子。您还必须在创建该帖子的页面/用户的ID前面加前缀。因此,如果您的页面ID为589476469431696,您实际上需要创建一个组合ID,例如589476469431696_1104054513000418->"{page_id}_{post_id}"。我不知道这是否可以互换

    因此,在创建了一个新的应用程序后,我能够让它工作

    另一个信息:当我一直在寻找用户访问令牌时,我在我的facebook应用程序高级设置中找到了它。但我似乎不再需要它了