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 报告可以获得多少?

Google Analytics API 收入差异