首页 文章

Analytics API:自动验证

提问于
浏览
1

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

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

1. Using the API for web applications :

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

2. Using the API for service accounts :

使用此解决方案,我可以创建报告而无需手动登录Google,这非常棒 . 但是,此方法要求我将服务帐户添加到Google Analytics帐户,方法是将新创建的用户 XXXXXXXX@PROJECT-ID.iam.gserviceaccount.com 添加到我希望访问的每个Google Analytics视图中 . 我可以't do that, as some of the views I'尝试访问由我公司管理's clients and I can' t要求他们每个人添加另一个Google Analytics用户 .

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

Service Accounts Manager

Analytics Administration

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

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

2 回答

  • 2

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

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

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

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

    Update:

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

    • 未使用6个月的刷新令牌也将过期 .

    • 用户可以使用Google帐户转到应用设置,并随时撤消您的访问权限 .

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

  • 0

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

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

相关问题