Facebook Graph API(#190)必须使用页面访问令牌调用此方法

时间:2018-02-09 14:03:40

标签: facebook facebook-graph-api facebook-insights

我通过Facebook Graph API从Facebook洞察中获取的数据超过了一年。最近我的所有请求(例如{id}/insights)都返回并返回错误:(#190) This method must be called with a Page Access Token。 但Access令牌包含范围manage_pages,read_insights。 有什么想法吗?

2 个答案:

答案 0 :(得分:9)

manage_pages,read_insights

这将为用户提供access_token,您可以用它来管理网页&检查见解,

但自2018年5月5日起,任何/insights端点都需要页面令牌

使用您的manage_pages范围& user_token获取页面访问令牌

向此终端发送获取请求

GET /{page-id}?fields=access_token 

<强>输出

{
  "access_token": "{your-page-access-token}",
  "id": "{page-id}"
}

您可以使用返回的访问令牌立即调用/insights端点。

答案 1 :(得分:4)

由于我无法添加评论,我将在此处写下来。

字段名称为access_token,您可以在此处查看您的网页ID。

https://developers.facebook.com/tools/explorer/?method=GET&path=page-id%3Ffields%3Daccess_token&version=v2.12

对于PHP

如果您的脚本是PHP,使用Facebook SDK for PHP现在它已经破坏,您只需要检索令牌并传递它而不是您正在使用的访问/刷新令牌。

//Retrieve new 'page access token'.
$token = $fbApiClient -> get( "/{$pageId}?fields=access_token") -> getGraphNode()-> asArray();

//$q is your insights query which was working until now :(
//But with page acces token it will work again.
$response = $fbApiClient -> get( $q, $token['access_token']) -> getGraphEdge();

//(...) rest of script.

我认为它也很容易适应其他语言。您也可以(并且应该)存储页面访问令牌并在任何需要的地方使用它,而不是每次都检索它。