我正在编写一个访问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 APIresponse = @@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 :
鉴于服务帐户可以访问至少一个API(YouTube Analytics),并且相关帐户(service@myapp.com)可以访问Google Analytics网络界面,访问Google Analytics的服务帐户似乎有问题特别是API。
有什么想法吗?
类似主题:
答案 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/
然后你可以查询为
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步程序
答案 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。