Google Analytics API:“用户对此帐户没有足够的权限。”
Posted
技术标签:
【中文标题】Google Analytics API:“用户对此帐户没有足够的权限。”【英文标题】:Google Analytics API: "User does not have sufficient permissions for this account." 【发布时间】:2014-01-24 10:41:52 【问题描述】:我正在编写一个 Ruby 应用程序,它可以访问 Google Analytics API 以获取一些实验信息。
应用通过以下功能使用 Google 服务帐户进行连接和身份验证:
def connect
...
@@client = Google::APIClient.new(:application_name => 'My Service App',
:application_version => '1.0.0')
key_file = Rails.root.join('config', 'privatekey.p12').to_s
key_secret = 'somesecret'
key = Google::APIClient::PKCS12.load_key(key_file, key_secret)
asserter = Google::APIClient::JWTAsserter.new(
SECRETS[:google_service_account_email],
['https://www.googleapis.com/auth/yt-analytics.readonly',
'https://www.googleapis.com/auth/analytics.readonly'
],
key
)
@@client.authorization = asserter.authorize()
...
end
...它可以毫无问题地验证和发现两个 API。
针对 YouTube Analytics API 使用客户端可以正常工作。使用相同的帐户通过...访问 Analytics API。
response = @@client.execute(
# 'analytics is the API object retrieved via discover_api()
:api_method => analytics.management.experiments.list,
:parameters =>
'accountId' => 'AAAAAAAA',
'profileId' => 'PPPPPPPP',
'webPropertyId' => 'UA-WWWWWWWW-#'
)
导致 403 错误响应:
"domain":"global","reason":"insufficientPermissions","message":"User does not have sufficient permissions for this account."
关于授权,我已经仔细检查了帐户service@myapp.com:
拥有 Google Analytics(分析)网络界面的完全权限。我使用 service@myapp.com 帐户登录,并且能够查看我尝试列出的相同实验。李> 已启用 Analytics API。 在 API 控制台中,我在“服务”部分确认 Analytics API 项已切换为“开启”。 (就像 YouTube 分析一样。) 我正在使用适当的 AccountID、ProfileID 和 WebPropertyID 值。直接从 Google Analytics 网络界面复制。鉴于服务帐户可以访问至少一个 API(YouTube 分析),并且关联帐户 (service@myapp.com) 可以访问分析网络界面,因此访问分析的服务帐户似乎有问题尤其是 API。
有什么想法吗?
类似主题:
“Not sufficient permissions” google analytics API service account(注意:这个错误与我的略有不同) Analytics blog post, check comments section for 'permissions'【问题讨论】:
您是否在您的实际 GA 配置文件中授予服务帐户权限?管理员 > 查看 > 用户管理 > “添加权限:” service@myapp.com 帐户拥有完全权限。但是,您的评论确实提示我添加实际的服务帐户电子邮件(即 XXXXX@developer.gserviceaccount.com),这似乎解决了问题。如果您想以答案的形式提出这个问题,我很乐意为您效劳。 Analytics Google API Error 403: "User does not have any Google Analytics Account" 的可能副本 @andygeers 这个有不同的错误信息,是用 Ruby 编写的,已经 6 个月大了......我认为此时将其标记为“重复”对任何人都没有帮助.另外,即使它是重复的,打开这个也可以让更多来自 Google 的人(通过 SEO)找到他们的答案。 @andygeers 我非常不同意:我的问题有更多细节,并链接到其他资源,而另一个答案只有“我遵循了 Google 的说明”。尽管答案相同,但问题却不同;用户不会找到相同的方式,所以这个提供了额外的覆盖范围。 【参考方案1】:确保您授予服务帐户电子邮件(例如 1234567890@developer.gserviceaccount.com)从您的 GA 视图读取/写入的权限。
管理 > 查看 > 用户管理 > “添加权限:”
【讨论】:
一个额外的问题:确保您在“属性”级别而不是“视图”级别执行此操作(此时 Google Analytics 的管理界面有点混乱) @andygeers 感谢这个小提示!确实很有帮助:) 所以我这样做了,但它仍然不适合我。还有其他建议吗? 这是哪里?我没有找到管理部分 还是有帮助的,谢谢!【参考方案2】:选择正确的 ID!
在我的情况下,我使用了正确的凭据(帐户 ID、帐户密码 -> 授权码 -> 访问令牌)并且设置了正确的电子邮件权限,但我在 管理员> 帐户设置 页面并简单地将 ga: 添加到前面。
您实际需要的 id 是表 id!(或者至少对我有用,因为这里的大多数人都提到了帐户 id,这对我不起作用。) .你可以在这里找到那个:https://ga-dev-tools.appspot.com/account-explorer/
然后就可以查询为
service.get_ga_data(TABLE_ID,'2017-03-25','2017-03-25','ga:users,ga:pageviews')
我发现这个 API 的整体文档记录很差,用户界面也不清楚。但也许这只是我。
【讨论】:
是的!这也是我遇到的问题。在我浏览的四个教程中,我没有在哪里找到提到的“table_ID”。我是在阅读这篇文章并使用上面列出的 URL 后才知道的。 我正在使用 googleAnalyticsR CRAN 包,遇到了与操作所述相同的问题。好像我是 accountId 而不是 viewId。来自我的 +1 这里是 [Google Analytics API 参考] (developers.google.com/analytics/devguides/reporting/core/v3/…) -- 我花了一段时间才找到它,它显示了我们可用的所有 URL 和参数。【参考方案3】:如果您在将开发者电子邮件添加到分析用户后仍然看到此消息。
您可能需要在 new Google_Service_Analytics($client); 之前为对象添加范围
$client->setScopes("https://www.googleapis.com/auth/plus.login");
我花了一整天的时间来解决这个问题!
【讨论】:
【参考方案4】:我还必须前往开发者控制台并启用 API 才能使其正常工作。转到 the developer console 并选择您的项目并启用您要使用的 API。
【讨论】:
是的!我拥有服务帐户、分析帐户的权限,在我的 php 代码和我的 JS 中设置范围,我知道我必须在某个地方按下另一个按钮。【参考方案5】:确保您输入了正确的 table_id
(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
【讨论】:
【参考方案6】:即使在分析中将电子邮件添加到帐户级别后,我仍然遇到相同的权限问题,但以下建议有所帮助但没有解决:
$client->setScopes("https://www.googleapis.com/auth/plus.login");
这对我不起作用,但确实如此:
$client->setScopes("https://www.googleapis.com/auth/analytics");
现在需要 https:// 进行身份验证。
【讨论】:
您介意在您的代码中发布一个要点吗?你的客户对象是什么?我已经设置了范围,但是有一些不同的东西,我可以进行基本的查询... 不开玩笑,如果您要访问 Analytics 数据,则需要添加分析范围。 如果您使用服务帐户连接,则需要范围:googleapis.com/auth/analytics。但是,当使用 OAuth 2.0 时,所需的范围是:googleapis.com/auth/plus.login。至少这是我在 node.js 上使用全局服务帐户的经验。【参考方案7】:如果您是新手,只是为了让您知道需要 3 步程序
-
启用 Google Analytics Reporting API,然后创建服务电子邮件帐户(OAuth 客户端 ID)
在 google 控制台中添加并授予此服务电子邮件的权限
在 Google 分析跟踪中添加并授予此服务电子邮件帐户的权限 -> 用户管理
【讨论】:
【参考方案8】:确保您授予服务帐户电子邮件(例如 1234567890@developer.gserviceaccount.com)从您的 GA 视图读取/写入的权限。
管理 > 查看 > 用户管理 > “添加权限:”
我在尝试将 GA 源集成到元数据库时遇到了这个问题。
元数据库需要 Oauth 客户端 ID 和密码。所以我在 GA 中创建了 Oauth 客户端 ID(如果您遇到一个问题,说您需要一个 Guite 用户才能使其内部访问,那么您需要在工作区下注册一个新帐户)。
然后,我通过添加我的谷歌云(工作区)帐户来查看用户管理来解决这个问题,而不是 1234567890@developer.gserviceaccount.com
只是谷歌云登录账号,我用1234567890@developer.gserviceaccount.com试过了,还是不行。元数据库的不同之处在于它询问您的谷歌云帐户而不是服务帐户的 oauth id 和密码。
希望这可以帮助遇到同样情况的人。
但这仍然是技巧,因为另一个没有任何视图的 GA4 服务 How to create view in Google Analytics 4 还是不能解决这个问题。 如果有人知道,请发表评论。只是不知道如何在GA4中调用api,因为根本没有视图。
【讨论】:
【参考方案9】:对我来说,当我选择在“显示高级选项”部分启用“创建 Universal Analytics 媒体资源”创建的媒体资源时,该问题已解决
【讨论】:
【参考方案10】:Google Analytics v4 的其他答案已过时。 需要启用和使用不同的 API。
https://developers.google.com/analytics/devguides/reporting/data/v1/quickstart-client-libraries
对于 node.js:
import BetaAnalyticsDataClient from "@google-analytics/data";
import google from "googleapis";
const auth = new google.auth.GoogleAuth(
credentials:
client_email: process.env.GOOGLE_CLIENT_EMAIL,
client_id: process.env.GOOGLE_CLIENT_ID,
private_key: process.env.GOOGLE_PRIVATE_KEY,
,
);
const analyticsDataClient = new BetaAnalyticsDataClient(
auth,
);
【讨论】:
【参考方案11】:如果某人有更多视图,他应该使用视图 ID。
【讨论】:
以上是关于Google Analytics API:“用户对此帐户没有足够的权限。”的主要内容,如果未能解决你的问题,请参考以下文章
Google Analytics Metadata API 识别有效组合
Google Analytics 报告 API - 权限不足 403
Google Analytics API:每个人会话导出数据
通过“google-api-php-client”库检索 Google Search Analytics
与链接到 Google Adwords 帐户的 Google Analytics API 相比,Google Adwords API 报告可以获得多少?