使用服务帐户身份验证时,Google Analytics Reporting API出现问题

时间:2019-01-25 16:24:05

标签: node.js python-2.7 google-analytics-api

我需要访问我公司的Google Analytics(分析)帐户中用于监控我们的受众的信息中心的数据。我负责这个仪表板项目的同事之一是Google项目的所有者,该项目创建了用于访问API的凭据。但是,他离开了,这个Google项目在他的帐户删除后仍然无法幸免。

因此,我试图通过创建另一个项目以获取新凭据来尽快解决此问题。由于仪表板不需要用户数据,因此我认为使用service account method是相关的。我创建了Google项目,启用了Google Analytics Reporting API V4,创建了服务帐户并下载了与之相关的私钥。然后,我在上面的链接中使用了Google提供的示例脚本,确保遵守了每个步骤(我没有安装客户端库,因为我以前的同事已经安装了该客户端库),但是出现了这个错误:

Error: Command failed: cd scripts; python HelloAnalytics.py;
Traceback (most recent call last):
  File "HelloAnalytics.py", line 96, in <module>
    main()
  File "HelloAnalytics.py", line 89, in main
    key_file_location=key_file_location)
  File "HelloAnalytics.py", line 21, in get_service
    key_file_location, scopes=scopes)
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/service_account.py", line 223, in from_json_keyfile_name
    revoke_uri=revoke_uri)
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/service_account.py", line 172, in _from_parsed_json_keyfile
    'Expected', client.SERVICE_ACCOUNT)
ValueError: ('Unexpected credentials type', None, 'Expected', 'service_account')
    at ChildProcess.exithandler (child_process.js:275:12)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
  killed: false,
  code: 1,
  signal: null,
  cmd: 'cd scripts; python HelloAnalytics.py;' }

如您所见,凭证类型存在错误,但是我检查了凭证JSON,并且类型为“ service-account”,尽管错误显示了什么... 你知道我有什么办法可以解决吗?看来我非常接近成功。不幸的是,我无法联系到我以前的同事。

编辑:

我最终放弃了使用服务帐户方法的想法,因为项目文件引用的是“已安装的应用程序”方法(可以在at this URL中找到)。因此,我在计算机上创建了Python 2.7 / Anaconda环境,使用Python脚本和client_secrets.json创建了一个文件夹,下载了库并运行了该脚本。当我打开Internet浏览器并要求我允许访问我的Google Analytics(分析)数据时,它确实起作用了。然后可以在文件夹中找到带有令牌的analyticsreporting.dat文件。

然后,我用刚刚创建的新内容替换了client_secrets和analyticsreporting内容,希望该项目足以再次运行。它在不需要您的Google帐户进行身份验证的测试版本上执行(我们使用此方法来限制对我们同事的访问),但是由于以下错误,它使实时版本崩溃:

400. Error: redirect_uri_mismatch

您知道如何解决此错误吗?我没有提到任何重定向URI,也不知道在Google API dahsboard上的哪里可以找到它。

0 个答案:

没有答案