Google AnalyticsAPI - 不一致错误“insufficientPermissions'(403)

时间:2016-01-25 15:16:52

标签: google-analytics google-analytics-api

背景:

我有一个PHP代码,代表我的用户运行对Google AnalyticsAPI的查询。 我正在使用OAuth2进行身份验证并在我的数据库中存储用户的访问令牌。

我的代码确保不超过每个用户的配额(10 QPS),并且我在查询中使用“quotaUser”参数。

问题:

我对GA的查询中约有50%的回复时出现错误403(“insufficientPermissions”,“用户对此个人资料没有足够的权限。”)。 奇怪的是,其他~50%的人正在成功获得GA的结果。

一些要点:

  • 所有成功查询的共同点和不成功查询的共同点就是它们所处的批处理:我的代码正在发送“批量”查询(一个接一个地,它们之间的延迟非常短)到GA的API,每个批次都是以太网传递或失败的403。

  • 添加\删除范围的权限并未解决问题。

  • 值得一提的是,这不是View-ID \ Account-ID问题等,因为同一查询可以为同一用户和视图传递或失败。

  • 我看到了一个相关的未回答的问题here,但找不到任何其他真正相关的问题。

我的代码中的代码段:

//Create a Google Client
$client = new Google_Client();
$client->setAuthConfigFile($this->secretJson);
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY, Google_Service_Oauth2::PLUS_LOGIN, Google_Service_Analytics::ANALYTICS);

// Set the access token on the client.
$client->setAccessToken($accessToken);

// Create an authorized analytics service object.
$this->analytics = new Google_Service_Analytics($client);

...

//Run the query
$results = $this->analytics->data_ga->get($id, $startDate, $endDate, $metrics, $opts);

1 个答案:

答案 0 :(得分:1)

Ido,你还能重现这个问题吗?这听起来非常像您的访问令牌存在问题。我将通过确保为所有批处理运行设置相同的访问令牌并验证令牌未过期(isAccessTokenExpired())来开始进行故障排除。