Analytics API:自动身份验证

时间:2016-09-14 08:55:24

标签: php google-analytics google-oauth google-analytics-api

我正在尝试使用Google Analytics Reporting API构建信息中心,以便为我公司的客户创建报告。

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

1。使用API for web applications

我成功完成了这项工作,但OAuth2流程迫使我通过将我重定向到Google登录页面来对Google进行身份验证。登录后,将创建令牌并生成我的报告。但我无法在没有用户干预的情况下自动进行身份验证(即填写Google登录表单)

2。使用API for service accounts

使用此解决方案,我可以创建报告而无需手动登录Google,这非常棒。但是,此方法要求我将服务帐户添加到Google Analytics帐户,方法是将新创建的用户XXXXXXXX@PROJECT-ID.iam.gserviceaccount.com添加到我希望访问的每个Google Analytics视图中。我无法做到这一点,因为我尝试访问的一些观点是由我公司的客户管理的,我不能让他们每个人添加另一个Google Analytics用户。

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

Service Accounts Manager

Analytics Administration

有没有办法可以将API用于带有静态令牌的Web应用程序(即无需手动登录Google),或者将API用于服务帐户,而无需在每个用户中添加Google创建的用户我的分析视图?

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

2 个答案:

答案 0 :(得分:2)

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

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

诀窍是保存与每个用户帐户关联的刷新令牌。您的客户必须对应用程序进行身份验证才能授予您访问权限。您存储刷新令牌。刷新令牌不应该过期(可能有一些原因)您可以在需要时获得访问权限。

注意:您还可以在帐户级别放置服务帐户电子邮件,以便您访问所有内容。但这对您无法访问的客户无法提供帮助。

<强>更新

刷新令牌不会过期,除非:

  • 未使用6个月的刷新令牌也将过期。
  • 用户可以使用Google帐户转到应用设置,并随时撤消您的访问权限。

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

答案 1 :(得分:0)

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

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