Google AnalyticsAPI:“用户对此帐户没有足够的权限。”

时间:2014-01-06 21:52:09

标签: google-analytics google-api google-analytics-api google-api-client

我正在编写一个访问Google AnalyticsAPI的Ruby应用程序来提取一些实验信息。

该应用通过以下功能使用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 项目已切换为ON。 (就像YouTube Analytics一样。)
  • 我使用的是相应的AccountID,ProfileID和WebPropertyID值。直接从Google Analytics网络界面复制。

鉴于服务帐户可以访问至少一个API(YouTube Analytics),并且相关帐户(service@myapp.com)可以访问Google Analytics网络界面,访问Google Analytics的服务帐户似乎有问题特别是API。

有什么想法吗?

类似主题:

10 个答案:

答案 0 :(得分:50)

请务必向您的GA视图提供服务帐户电子邮件(例如1234567890@developer.gserviceaccount.com)的读/写权限。

管理员>查看>用户管理> “添加权限:”

答案 1 :(得分:16)

选择正确的ID!

在我的情况下,我使用了正确的凭据(帐户ID,帐户密码 - > authorization_code - > access_token)并且设置了正确的电子邮件权限,但我在管理员>上使用了帐户ID帐户设置页面,只需将ga:添加到正面。

您实际需要的ID是表格ID!(或者至少对我有用的ID,因为这里的大多数人都提到了帐户ID,而不是为我工作。)你可以在这里找到一个:https://ga-dev-tools.appspot.com/account-explorer/

enter image description here

然后你可以查询为

service.get_ga_data(TABLE_ID,'2017-03-25','2017-03-25','ga:users,ga:pageviews')

我发现这个API总体上记录不清,而且用户界面还不清楚。但也许那只是我。

答案 2 :(得分:2)

如果在将开发人员电子邮件添加到分析用户后仍然看到此消息。

您可能需要在新的Google_Service_Analytics($ client)之前向对象添加范围;

$客户端 - > setScopes( “https://www.googleapis.com/auth/plus.login”);

我花了一整天时间试图解决这个问题!

答案 3 :(得分:2)

即使在分析中将电子邮件添加到帐户级别后,我仍然遇到了相同的权限问题,但以下建议有所帮助,但没有解决:

$客户端 - &GT; setScopes( “<强> HTTPS ://www.googleapis.com/auth/plus.login”);

这对我不起作用,但确实如此:

$客户端 - &GT; setScopes( “<强> HTTPS ://www.googleapis.com/auth/analytics”);

https://现在需要进行身份验证。

答案 4 :(得分:2)

确保您输入的是正确的table_id

+--------------+---------------+-------------------------------+-------------------+
| AUTONUMBER    EMPLOYEECODE    CLOCKINGDATETIMEUNROUNDED       DAYREVIEWINOUTFLAG |
+--------------+---------------+-------------------------------+-------------------+
| 208945        11307           2015-11-10 17:31:00.000         1                  |
| 209284        11307           2015-11-11 07:59:00.000         0                  |
| 209372        11307           2015-11-11 17:01:00.000         1                  |
| 210162        11307           2015-11-13 07:30:00.000         0                  |
| 210185        11307           2015-11-13 10:30:00.000         1                  |
+--------------+---------------+-------------------------------+-------------------+

答案 5 :(得分:2)

我还必须转到开发人员控制台并启用API才能使其正常工作。转到the developer console并选择您的项目并启用您要使用的API。

答案 6 :(得分:0)

如果您是新手,请告诉我们所需的3步程序

  1. 启用Google Analytics(分析)Reporting API,然后创建服务电子邮件帐户(OAuth客户端ID)
  2. 在Google控制台中添加并授予此服务电子邮件的权限
  3. 在Google Analytics(分析)跟踪->用户管理
  4. 中添加并授予此服务电子邮件帐户的权限

答案 7 :(得分:0)

请确保您授予服务帐户电子邮件(如1234567890@developer.gserviceaccount.com)从GA视图中进行读取/写入的权限。

管理员>查看>用户管理>“添加权限:”

当我尝试将GA源集成到元数据库时遇到了这个问题。

元数据库需要Oauth clientid和密码。因此,我在GA中创建了Oauth clientid(如果遇到一个问题,即需要Guite用户对其进行内部访问,那么您需要在工作空间下注册一个新帐户)。

然后,我通过添加我的Google Cloud(工作区)帐户来查看用户管理来解决此问题,而不是 1234567890@developer.gserviceaccount.com

我只是用Google Cloud登录帐户尝试了1234567890@developer.gserviceaccount.com,但它不起作用。元数据库的区别在于,它询问您的Google云帐户而不是服务帐户的oauth ID和密码。

希望这可以帮助某人面对相同的情况。

但这仍然是技巧,因为另一个没有任何视图的GA4服务 How to create view in Google Analytics 4 仍然不能解决这个问题。 如果有人知道,请发表评论。只是因为根本没有视图,所以不知道如何在GA4中调用api。

答案 8 :(得分:0)

对我来说,当我选择通过在“显示高级选项”部分启用“创建 Universal Analytics 媒体资源”创建的媒体资源时,问题已经解决

答案 9 :(得分:-3)

如果有人有更多观点,他应该使用视图ID。