无法在 RestFB 中使用页面访问令牌找到 Facebook 页面洞察

Unable to find Facebook Page Insights using Page Access Token in RestFB

我必须开发一个自动化流程来获取我的 Facebook 页面见解。因为,用于身份验证目的的访问令牌本质上是临时的。因此,我创建了一个 Facebook 应用程序,并通过提供所有必需的权限生成了一个页面访问令牌,这样我就可以延长它的生命周期。 参考 Link : Java + RestFB API: Getting fresh Page Access Token without messing with AppID, appSecret

以下是我的一段代码:

    FacebookClient fb=new DefaultFacebookClient(accesstoken,Version.VERSION_2_7);
    Connection<Insight> insights =fb.fetchConnection("119456244790112/insights", Insight.class,Parameter.with("since", "2016-08-01"),Parameter.with("until", "2016-08-27"));
    for (Insight insight : insights.getData())
            if(insight.getName().equals("page_impressions") && (insight.getPeriod().equals("day")) )
                System.out.println(insight.getName()+"\t"+insight.getPeriod()+"\t"+insight.getValues());

'accesstoken'是按照link.

得到的short-life Page access-token

以下是我得到的异常堆栈:

Exception in thread "main" com.restfb.exception.FacebookOAuthException: Received Facebook error response of type OAuthException: Invalid query (code 3001, subcode 1504028) at com.restfb.DefaultFacebookClient$DefaultGraphFacebookExceptionMapper.exceptionForTypeAndMessage(DefaultFacebookClient.java:1191) at com.restfb.DefaultFacebookClient.throwFacebookResponseStatusExceptionIfNecessary(DefaultFacebookClient.java:1117) at com.restfb.DefaultFacebookClient.makeRequestAndProcessResponse(DefaultFacebookClient.java:1058) at com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:969) at com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:931) at com.restfb.DefaultFacebookClient.fetchConnection(DefaultFacebookClient.java:356) at Main.main(Main.java:31)

请帮助我使用 Page Access Token 找到 Page Insights,从而延长它的生命周期,以便我可以从中生成一个自动化流程。谢谢!

您一口气问了两个问题。

  1. 扩展访问令牌: 首先,您需要用户访问令牌。比扩展它(查看 RestFB 手册:http://restfb.com/documentation/#access-token-extend)并从 /me/accounts 获取页面的页面访问令牌。页面访问令牌的生命周期不受限制。

  2. OAuthException: 如果您查看异常的错误消息,您应该会看到缺少指标。你需要告诉 Facebook 你想获得什么指标。检查图表 API 参考以获取有效指标:https://developers.facebook.com/docs/graph-api/reference/v2.7/insights

我终于成功地使用 'Page Access Token' 延长了生命周期来提取 Page Insights 数据。

以下是向 Facebook 发出适当请求的片段:

Connection<Insight> insights =fbclient.fetchConnection("1388062484542431/insights/page_views/day", Insight.class,Parameter.with("since", "2016-08-01"),Parameter.with("until", "2016-08-30"));

如果需要传递多个指标,那么我们可以通过传递所需指标的逗号分隔名称来实现。

谢谢。