Analytics API : 自动认证
Analytics API : automatic authentification
我正在尝试使用 Google 分析报告 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 视图。我不能那样做,因为我尝试访问的一些视图是由我公司的客户管理的,我不能要求他们每个人都添加另一个 Analytics 用户。
我需要能够使用已配置的用户电子邮件访问 Analytics 视图。我试图在 Service Accounts Manager 中将此地址添加为我的服务帐户的所有者,但没有成功(见下文的屏幕截图)。
有什么方法可以将 API 用于具有静态令牌的 Web 应用程序(即无需手动登录 Google),或者将 API 用于服务帐户,而无需在我的每个 Analytics 视图中添加 Google 创建的用户?
我在这里不知所措,所以任何建议都会有所帮助。
据我所知,cron 作业的预期方法是对服务帐户使用 API,正如您所描述的那样。但是,这似乎是一种预期且适当的行为,即在未经视图所有者事先授权的情况下,您不能仅通过使用服务帐户提供其 ID 来访问随机视图。如果没有此设置,Analytics 将不知道您与客户的关系,因此拒绝访问数据。
我不确定它是否受支持,但您可以尝试在 属性 或 Analytics 帐户级别添加您的服务帐户,以便所有连接的视图都继承此设置。
由于您无法控制您所说的所有帐户,因此您将无法使用服务帐户。
你必须使用 Oauth2。必须有人在第一次验证您的应用程序。首次授予访问权限后,您将获得访问令牌以访问 API 和刷新令牌。如果您存储此刷新令牌,您将能够随时从您的 cron 作业请求一个新的访问令牌,以便 运行 您的报告。
诀窍是保存与每个用户帐户关联的刷新令牌。您的客户必须对应用程序进行身份验证才能授予您访问权限。您存储刷新令牌。刷新令牌不应过期(有几个原因可能会过期)您将能够在需要时获得访问权限。
注意:您还可以将服务帐户电子邮件放在帐户级别,这样您就可以访问所有内容。但这对您无法访问的客户没有帮助。
更新:
刷新令牌不会过期,除非:
- 6 个月未使用的刷新令牌也将过期。
- 用户可以转到 google 帐户上的应用程序设置并随时撤销您的访问权限。
用户可以重新验证您的应用程序(相同的客户端 ID)26 次,为您提供 26 个不同的刷新令牌,在第 26 次之后,第一个刷新令牌将过期。单个用户只能有 26 个工作刷新令牌。确保您始终保存最新的刷新令牌。
我正在尝试使用 Google 分析报告 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 视图。我不能那样做,因为我尝试访问的一些视图是由我公司的客户管理的,我不能要求他们每个人都添加另一个 Analytics 用户。
我需要能够使用已配置的用户电子邮件访问 Analytics 视图。我试图在 Service Accounts Manager 中将此地址添加为我的服务帐户的所有者,但没有成功(见下文的屏幕截图)。
有什么方法可以将 API 用于具有静态令牌的 Web 应用程序(即无需手动登录 Google),或者将 API 用于服务帐户,而无需在我的每个 Analytics 视图中添加 Google 创建的用户?
我在这里不知所措,所以任何建议都会有所帮助。
据我所知,cron 作业的预期方法是对服务帐户使用 API,正如您所描述的那样。但是,这似乎是一种预期且适当的行为,即在未经视图所有者事先授权的情况下,您不能仅通过使用服务帐户提供其 ID 来访问随机视图。如果没有此设置,Analytics 将不知道您与客户的关系,因此拒绝访问数据。
我不确定它是否受支持,但您可以尝试在 属性 或 Analytics 帐户级别添加您的服务帐户,以便所有连接的视图都继承此设置。
由于您无法控制您所说的所有帐户,因此您将无法使用服务帐户。
你必须使用 Oauth2。必须有人在第一次验证您的应用程序。首次授予访问权限后,您将获得访问令牌以访问 API 和刷新令牌。如果您存储此刷新令牌,您将能够随时从您的 cron 作业请求一个新的访问令牌,以便 运行 您的报告。
诀窍是保存与每个用户帐户关联的刷新令牌。您的客户必须对应用程序进行身份验证才能授予您访问权限。您存储刷新令牌。刷新令牌不应过期(有几个原因可能会过期)您将能够在需要时获得访问权限。
注意:您还可以将服务帐户电子邮件放在帐户级别,这样您就可以访问所有内容。但这对您无法访问的客户没有帮助。
更新:
刷新令牌不会过期,除非:
- 6 个月未使用的刷新令牌也将过期。
- 用户可以转到 google 帐户上的应用程序设置并随时撤销您的访问权限。
用户可以重新验证您的应用程序(相同的客户端 ID)26 次,为您提供 26 个不同的刷新令牌,在第 26 次之后,第一个刷新令牌将过期。单个用户只能有 26 个工作刷新令牌。确保您始终保存最新的刷新令牌。