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

时间:2016-08-30 03:40:37

标签: facebook-graph-api restfb

我必须开发一个自动流程来获取我的Facebook页面洞察力。因为,用于身份验证的Access令牌本质上是临时的。因此,我创建了一个Facebook应用程序,并通过提供所有必需的权限,我生成了一个页面访问令牌,以便我可以延长它的寿命。 参考链接: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'是通过遵循上述链接获得的短命页面访问令牌。

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

  

线程“main”中的异常   com.restfb.exception.FacebookOAuthException:收到Facebook错误   OAuthException类型的响应:无效查询(代码3001,子代码   1504028)在   com.restfb.DefaultFacebookClient $ DefaultGraphFacebookExceptionMapper.exceptionForTypeAndMessage(DefaultFacebookClient.java:1191)     在   com.restfb.DefaultFacebookClient.throwFacebookResponseStatusExceptionIfNecessary(DefaultFacebookClient.java:1117)     在   com.restfb.DefaultFacebookClient.makeRequestAndProcessResponse(DefaultFacebookClient.java:1058)     在   com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:969)     在   com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:931)     在   com.restfb.DefaultFacebookClient.fetchConnection(DefaultFacebookClient.java:356)     在Main.main(Main.java:31)

请帮助我使用页面访问令牌查找页面洞察,从而延长其使用寿命,以便我可以自行生成一个自动化流程。谢谢!

2 个答案:

答案 0 :(得分:0)

你在一个问题中提出了两个问题。

  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

答案 1 :(得分:0)

最后,我成功地使用具有延长寿命的“页面访问令牌”来提取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"));

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

感谢。