【问题标题】:Unable to find Facebook Page Insights using Page Access Token in RestFB无法在 RestFB 中使用页面访问令牌找到 Facebook 页面洞察
【发布时间】:2016-08-30 03:40:36
【问题描述】:

我必须开发一个自动化流程来获取我的 Facebook 页面见解。因为,用于身份验证目的的访问令牌本质上是临时的。因此,我创建了一个 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'是通过上述链接获得的短期Page access-token。

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

线程“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)

请帮助我使用页面访问令牌找到页面洞察,从而延长它的生命周期,以便我可以由此产生一个自动化的过程。谢谢!

【问题讨论】:

    标签: facebook-graph-api restfb


    【解决方案1】:

    你同时提出了两个问题。

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

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

    【讨论】:

    • 感谢您对此进行调查。在我的问题部分中,我只提到我已经获得了“页面访问令牌”。如果与临时的“用户访问令牌”一起使用,同一段代码可以很好地工作并返回所有可用的见解。不过,如果需要告诉 Facebook 我想要什么度量值,那么请给我所需的代码(问题部分)编辑,以便我解决我的问题。我将对此负责。
    【解决方案2】:

    最后,我成功地使用“页面访问令牌”提取了 Page Insights 数据,并延长了生命周期。

    以下是向 Facebook 发出适当请求的 sn-p:

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

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

    谢谢。

    【讨论】:

      猜你喜欢
      • 2012-01-04
      • 1970-01-01
      • 2013-02-07
      • 2013-06-16
      • 2012-04-28
      相关资源
      最近更新 更多