2016-09-14 95 views
1

我正在尝试使用Google Analytics Reporting API构建仪表板,以便为我公司的客户创建报告。Analytics API:自动验证

问题是我需要使用cronjob创建报告,但这需要验证。我尝试以下方法:

1.使用API for web applications

我设法使这项工作,但过程的OAuth2迫使我通过重定向我到谷歌登录页面来验证到谷歌。一旦登录,令牌被创建并生成我的报告。但我不能找到一种方法,而无需用户干预,自动认证(即填补谷歌登录表单)

2.使用API for service accounts

有了这个解决方案,我能不来创建报告手动登录到Google,这非常棒。但是,此方法要求我将服务帐户添加到Google Analytics帐户,方法是将新创建的用户[email protected]添加到我希望访问的每个Google Analytics数据视图中。我无法这样做,因为我尝试访问的一些视图是由我公司的客户管理的,我无法要求他们每个人添加另一个Google Analytics用户。

我需要能够使用已配置的用户电子邮件访问Google Analytics视图。我试图在Service Accounts Manager中添加此地址作为我的服务帐户的所有者,但没有运气(请参阅以下屏幕截图)。

Service Accounts Manager

Analytics Administration

有没有什么办法,我可以使用一个静态令牌的Web应用程序的API(即不必手动登录到谷歌),或使用服务帐户的API不必须在每个Google Analytics视图中添加Google创建的用户?

我在这里不知所措,所以任何建议都会有帮助。

回答

2

由于您无法控制所有帐户,因为您说过您无法使用服务帐户。

在那里你将不得不使用Oauth2。有人必须首次验证您的应用程序。一旦授予访问权限,您将首次获得访问令牌以访问API和刷新令牌。如果您存储此刷新令牌,则可以随时从您的cron作业中请求新的访问令牌,以便运行报告。

诀窍是保存与每个用户帐户关联的刷新标记。您的客户必须验证应用程序才能授予您访问权限。您存储刷新令牌。刷新标记不应该过期(有几个原因可能会导致)在需要时您将能够获得访问权限。

注意:您也可以在帐户级别放置服务帐户电子邮件,以便您访问所有内容。但是这不会帮助你与你无法访问的客户。

更新:

刷新令牌除下不会过期:

  • 刷新令牌不使用6个月也将到期。
  • 用户可以前往Google帐户的应用设置,并随时撤销访问权限。

用户可以重新验证您的应用程序(相同的客户端ID)26次,为您提供26个不同的刷新令牌,第26个刷新令牌将过期后。一个用户只能拥有26个工作刷新令牌。确保您始终保存最新的刷新令牌。

+0

我会研究一下,谢谢。我有一个问题,即每个Google Analytics媒体资源的特定刷新标记(即,如果我想要检索20个不同网站的统计信息,则必须创建20个刷新标记),即使这些媒体资源都是在相同的分析中进行管理帐户(通过“帐户”,我的意思是我使用OAuth2授权API的电子邮件和密码)? – roberto06

+0

刷新令牌可让您访问经过身份验证的用户有权访问的所有Google Analytics帐户 – DaImTo

+1

太棒了!我会在接下来的几天内尝试,让你知道它是怎么回事! – roberto06

0

据我所知,cron作业的预期方法是将API用于服务帐户,就像您所描述的那样。但是,这似乎是一种预期的和适当的行为,您无需事先获得视图所有者的授权,只需通过为您的服务帐户提供其ID即可访问随机视图。如果没有此设置,Google Analytics就不会知道您与客户的关系,因此拒绝访问数据。

我不确定,如果支持,但您可以尝试在属性或Google Analytics帐户级别添加您的服务帐户,以便所有连接的视图都会继承此设置。

+0

同样的问题,我有超过200个Google Analytics(分析)帐户,我无法为每个帐户添加用户(主要是因为我只对其中一些用户具有阅读权限)。 – roberto06