【问题标题】:Analytics API : automatic authentification分析 API:自动认证
【发布时间】:2017-01-22 00:24:30
【问题描述】:

我正在尝试使用 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 视图中。我不能这样做,因为我尝试访问的一些视图是由我公司的客户管理的,我不能要求他们每个人都添加另一个 Analytics 用户。

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    注意:您还可以将服务帐户电子邮件放在帐户级别,这样您就可以访问所有内容。但这对您无权访问的客户没有帮助。

    更新:

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

    • 6 个月未使用的刷新令牌也会过期。
    • 用户可以随时前往谷歌账户上的应用设置并撤销您的访问权限。

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

    【讨论】:

    • 我会调查的,谢谢。不过,我有一个问题,是每个 Analytics 属性特有的刷新令牌(即,如果我想检索 20 个不同站点的统计信息,我将不得不创建 20 个刷新令牌),即使这些属性都在同一个 Analyitics 中进行管理帐户(“帐户”是指我使用 OAuth2 授权 API 时使用的电子邮件和密码)?
    • 刷新令牌让您可以访问经过身份验证的用户有权访问的所有 Google Analytics(分析)帐户
    • 太棒了!我会在接下来的几天里尝试一下,让你知道结果如何!
    • 试过了,它就像一个魅力,我无法相信它是多么容易,我花了多长时间才发现它。太感谢了。顺便说一句,你能告诉我刷新令牌可能过期的原因是什么吗?
    • 是的,这是有道理的。由于我的 cron 每天都会启动,并且应该没有人可以访问 Google 帐户,我想我不应该担心。感谢您的帮助,如果我可以为您投票 100 次,我会的;)
    【解决方案2】:

    据我所知,cron 作业的预期方法是为服务帐户使用 API,正如您所描述的那样。但是,如果没有视图所有者的事先授权,您不能仅通过提供服务帐户的 ID 来访问随机视图,这似乎是一种预期且适当的行为。如果没有此设置,Google Analytics(分析)将不会知道您与客户的关系,因此会拒绝访问数据。

    我不确定它是否受支持,但您可以尝试在媒体资源或 Google Analytics(分析)帐户级别添加您的服务帐户,以便所有关联的视图都继承此设置。

    【讨论】:

    • 同样的问题,我有 200 多个 Google Analytics(分析)帐户,我无法为每个帐户添加用户(主要是因为我只有其中一些帐户的读取权限)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 2016-10-22
    • 2013-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2011-05-11
    相关资源
    最近更新 更多