没有蟒蛇本地浏览器的谷歌Analytics(分析)API访问(Google Analytics AP

2019-08-01 14:53发布

我想查询使用Python从我的分析在本地数据库帐户和存储数据,定期下载数据的谷歌分析API。 我基本上是按照步骤给定的基本教程 。 我使用的是Python的谷歌客户端API库在这个过程中。

我的剧本是工作的罚款,到目前为止,当我在我的本地开发机(苹果机)上运行它。 当我开始了剧本,我的浏览器打开并提示我从应用程序授予我的分析数据的访问。 后来,我可以经常运行我的脚本,我想,让我的数据访问。

在我的服务器(Ubuntu的,只有终端提供),该w3m浏览器打开,但我不能从那里访问我的谷歌帐户。 我只能退出w3m杀与程序Ctrl-C 有这样的错误信息:

您的浏览器已经打开访问:

https://accounts.google.com/o/oauth2/auth?scope=some_long_url&access_type=offline

如果你的浏览器是在不同的机器上,然后退出并重新运行带命令行参数,这个应用程序

--noauth_local_webserver

然而,当我运行我的脚本参数--noauth_local_webserver ,我得到了相同的结果- w3m打开,我不能进行身份验证。

我怎样才能获得--noauth_local_webserver工作? 我有另一种方式,而不在同一台机器上的本地浏览器进行身份验证?

Answer 1:

当您使用FLAGS = gflags.FLAGS ,你实际上需要在命令行参数传递到FLAGS (这可能会或可能不会绊倒我也:))。 见这里对于如何做到这一点的分析为中心的例子(下面的代码的链接往往一段时间后消失)。 总的想法是, argv参数传递到FLAGS变量,然后成为提供给其他模块。

# From samples/analytics/sample_utils.py in the google-api-python-client source

def process_flags(argv):
  """Uses the command-line flags to set the logging level.

  Args:
    argv: List of command line arguments passed to the python script.
  """

  # Let the gflags module process the command-line arguments.
  try:
    argv = FLAGS(argv)
  except gflags.FlagsError, e:
    print '%s\nUsage: %s ARGS\n%s' % (e, argv[0], FLAGS)
    sys.exit(1)

  # Set the logging according to the command-line flag.
  logging.getLogger().setLevel(getattr(logging, FLAGS.logging_level))

此外,原来我们并不孤单! 您可以跟踪这个bug的时候看到这个就会被添加的文档。



Answer 2:

你也可以使用GA作为服务API: https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-py这工作完全正常。 只是remmeber使用OpenSSL的$ OpenSSL的PKCS12 -in的client_secrets.p12 -nodes -nocerts> client_secrets.pem当你下载从谷歌开发者控制台中的P12进口密码打印到P12转换为unencryptet PEM文件



Answer 3:

我遇到同样的问题,并设法通过ssh方式连接到我的服务器来解决这个问题。 例:

ssh -L 8080:127.0.0.1:8080 <server-name>

然后,我通过SSH跑到我的脚本。 当我提出了与URL( https://accounts.google.com/o/oauth2/auth?scope=some_long_url&access_type=offline ),我复制并粘贴到浏览器中我的机器上,以完成身份验证流程。



文章来源: Google Analytics API access without local browser in python