我从Facebook Graph API获得的数据来自Facebook Graph API超过一年。最近开始我的所有请求(如{id}/insights
)返回错误:(#190) This method must be called with a Page Access Token
。但Access令牌包含范围manage_pages,read_insights
。有任何想法吗?
manage_pages,read_insights
这将为用户提供access_token
,您可以用它来管理页面和检查见解,
但是自2018年5月5日以来,任何/insights
端点都需要页面令牌
使用manage_pages
范围和user_token
获取页面访问令牌
向此端点发送get请求
GET /{page-id}?fields=access_token
产量
{
"access_token": "{your-page-access-token}",
"id": "{page-id}"
}
您现在可以使用返回的访问令牌来调用/insights
端点。
由于我无法添加评论,我会在这里写。
字段名称是access_token
,您可以在此处查看您的页面ID。
如果您使用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.
我认为它也很容易适应其他语言。您也可以(并且应该)存储页面访问令牌并在任何需要的地方使用它,而不是每次都检索它。