Analytics Google API错误403:“用户没有任何Google Analytics(分析)帐户”


147

我正在根据此页面上的Google Analytics(分析)分步指南创建脚本:

https://developers.google.com/analytics/resources/tutorials/hello-analytics-api

授权完成没有问题,直到尝试访问数据为止。返回码是403,错误消息是:

用户没有任何Google Analytics(分析)帐户

此消息毫无意义:我的帐户具有Google Analytics(分析)数据,可跟踪多个网站,并且我可以从网络浏览器访问它而不会出现问题。我已经允许通过Google API控制台使用Google Analytics(分析)API,并且API访问为我提供了正确的数据。

Answers:


302

我也有这个问题。我通过将服务帐户的电子邮件地址添加到我希望其访问的Google Analytics(分析)配置文件中来对其进行修复。

通过在Google API控制台的“ API访问”标签下查看,我获得了服务帐户的电子邮件地址(例如xxxxxx@developer.gserviceaccount.com)。

然后,我按照Google的说明将电子邮件地址添加到Google Analytics(分析)配置文件中。现在一切都按预期工作。

祝好运!


8
这是最好的答案,我尝试过,它就像魅力一样!!非常感谢@Sebastian!
mongotop 2012年

1
如果您的帐户中有多个配置文件,并且您想使用GA API访问其数据,是否应该继续将xxxxx@developer.gserviceaccount.com添加到Google Analytics(分析)配置文件中,或者有一种更有效的方式而不涉及手动方式。谢谢!
mongotop 2012年

2
@mongotop不客气!不幸的是,我不知道一种更有效的方法-如果您找到一个,请在评论中告诉我们。
2012年

1
如果您在属性级别添加用户,请确保将其添加到正确的视图,因为Analytics(分析)用户界面有时会产生误导
tacone 2014年

1
您真是传奇,我花了一整天的时间来进行设置。
dspacejs

80

只需添加您给定的电子邮件(格式为71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com

致用户管理员:

用户没有任何Google Analytics(分析)帐户

希望它对您有帮助


2
可悲的是错误没有消失。静止消息:GAPI:无法请求帐户数据。错误:“ {{错误”:{“错误”:[{“域”:“全局”,“原因”:“ insufficientPermissions”,“消息”:“用户没有任何Google Analytics(分析)帐户。”}],“代码“:403,”消息“:”用户没有任何Google Analytics(分析)帐户。“}”“
JosFabre 2015年

1
@Lev超过3年,此答案仍然有效。我只是希望Google对此有所改善,但没有。它做得非常好:D
itsnikolay

28

我面临着同样的问题。通过将服务帐户用户(your account@yourwebsite-dev.iam.gserviceaccount.com)的电子邮件ID添加到Google Analytics(分析)帐户中的用户,可以解决该问题,

Analytics-主页->管理员(左窗格)->用户管理->添加(单击菜单右侧的加号)->添加新用户->在输入电子邮件地址中添加电子邮件ID。

在此处输入图片说明

现在,这将解决问题。


1
为什么这个答案不被接受?我花了2天的时间来找出为什么跟随本教程导致此错误的原因。
拉格纳

8

上面的评论中提到了此方法,但是如果您在帐户的“用户管理”下添加电子邮件地址,则该地址将无效。您必须单击屏幕视图部分下的用户管理。

在此处输入图片说明


我知道已经过去了很多年,但是现在我将该地址添加到了该帐户中,并且看起来效果很好。
彼得

我看不到“ User Management查看”下的链接
aldrien.h


2

我遇到了403错误,直到我将Google Analytics(分析)内部电子邮件帐户的权限从“读取和分析”更改为其他内容,将其保存,然后将权限重新更改为“读取和分析”,然后它才起作用。


这有帮助。我在API和Auth / Credentials下创建了一个新的“服务帐户”;并保存了.p12密钥对。然后,我进入Google Analytics(分析)用户管理控制台,并添加了服务用户的电子邮件地址。使用PHP API的.p12授权有效,但前提是我在权限列表中选中“读取和分析” 。
约翰尼·奥

2

万一这不起作用,请尝试打开已下载的JSON文件并搜索 client_email并复制该电子邮件地址,然后将其添加到“查看文件”中

点击

Analytics-Home Page ->Admin(left pane) -> User Management -> add (click on plus sign on right side of the menu) -> Add new User -> Add the client_email address which you copied.

如果那仍然不起作用

Analytics-Homepage-> Admin ->Views->User Management(Click on add(+) symbol, add this ccopied client_email address and give permissions and save it.

2

此消息在没有许可授予我们得到client_email,在谷歌alalyticsclient_email是你得到了从JSON文件。要向client_email您的应用授予使用权限,请转到Google Analytics(分析)网站,然后点击“管理员(设置图标)”

在此处输入图片说明

您将获得正确的菜单列表,然后单击“查看用户管理”

在此处输入图片说明

在这里,您会看到“ +”图标和“添加用户”,

在此处输入图片说明

单击该按钮后,您需要client_email在“电子邮件地址”字段中添加并保存它,您应该一切顺利!

在此处输入图片说明


1

我遇到了403错误。这些步骤使我得以解决。明确地说,我试图让Google的示例“ HelloAnalytics.php”与OAuth(无用户交互,适合于cron作业等)一起使用。

启用Analytics API之后,我在API和Auth / Credentials下创建了一个新的“服务帐户”;并保存了.p12密钥对。然后,我进入Google Analytics(分析)用户管理控制台,并添加了该服务用户的电子邮件地址。

如果我检查的时候使用PHP API的.p12授权的作品只有 “阅读和分析” 只有在权限列表。如果添加“管理用户”和/或“编辑”,则得到403。希望这会有所帮助,我已经花了几个小时研究了这个问题...


0

您尝试使用API​​的用户尚未启用其GA服务。
仅仅拥有一个Google帐户是不够的

...但是,仅拥有Google帐户并不会自动授予您访问Google Analytics(分析)的权限。首先,您必须注册Google Analytics(分析),这是一次简单的过程...


0

我也遇到了这个问题,我发现问题是我请求了太多权限。开发人员控制台要求同时询问http://www.googleapis.com/auth/analytics http://www.googleapis.com/auth/analytics.readonly权限。当我也使用sub索赔时,此方法不起作用。一个sub指示谷歌宣称令牌操作发出的访问代表其他用户的 -在我的情况下,拥有该服务帐户的谷歌帐户。我删除了analytics许可并坚持analytics.readonly使用了子声明:

{
  "iss":"123123123123123-xxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",
  "sub":"me.example@gmail.com"
  "scope":"http://www.googleapis.com/auth/analytics",
  ...
}

发出的Bearer令牌使我能够(至少一些)对完全不同的Google帐户拥有但已与我的gmail用户(me.example@gmail.com)共享(只读)的配置文件进行Google Analytics(分析)查询。


1
当我使用Google Analytics(分析)客户端SDK时,sub是什么?
Dejell 2014年

我希望这能成功!尝试执行相同操作时遇到以下错误:Google_Auth_Exception [401]:刷新OAuth2令牌时出错,消息:'{“错误”:“ unauthorized_client”,“ error_description”:“请求中未授权的客户端或作用域”。}'
SEoF 2015年

我建议你坚持下去。我们仍然使用此功能每隔几分钟从GA获取一次实时数据,全部使用bash进行!
mogsie

0

我设法通过确保

客户端= Google :: APIClient.new(:application_name =>'X',:application_version =>'1')

上面的应用程序名称变量'X是GA信息中心上的ACCOUNT名称,而不是PROPERTY名称,在我的情况下,该名称是我要访问的网站的实际网址。

令人困惑,但值得庆幸的是(不感谢Google!)


我试图找到这个“ X”。您可以发布屏幕截图吗?
Dejell 2014年

0

因为我们不提供“ sub”参数,所以发生了问题。除非我们提供此服务,否则呼叫将代表该长期服务帐户电子邮件进行。

因此,只需提供一个子参数以及您已经在报告中获得访问权限的电子邮件,一切就可以正常进行!



0

无需使用服务帐户,您可以通过使用以下方法来避免添加新用户权限的需求(按照该线程的主要回答) OAuth client ID凭据。

转到API凭证信息中心,然后单击“创建凭据”->“ OAuth客户端ID”。之后,您将获得身份验证API所需的客户端ID和客户端密码。

现在,您可以使用OAuth2WebServerFlow每次使用的身份验证。这是一个python3示例:

from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow

# TODO: Fill these in...
CLIENT_ID = ''
CLIENT_SECRET = ''
VIEW_ID = ''

flow = OAuth2WebServerFlow(
    CLIENT_ID, CLIENT_SECRET,
    'https://www.googleapis.com/auth/analytics.readonly',
    redirect_uri='urn:ietf:wg:oauth:2.0:oob'
)

authorize_url = flow.step1_get_authorize_url()
print('Receive code from:\n%s\n' % authorize_url)
code = input('Enter code here:').strip()
credentials = flow.step2_exchange(code)

api = build('analyticsreporting', 'v4', credentials=credentials)
body={
    'reportRequests': [{
        'viewId': VIEW_ID,
        'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
        'metrics': [{'expression': 'ga:sessions'}],
        'dimensions': [{'name': 'ga:country'}]
    }]
}

data = api.reports().batchGet(body=body).execute()
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.