【问题标题】:Simplest way authenticate with Python Google APIs to access own accounts使用 Python Google API 进行身份验证以访问自己的帐户的最简单方法
【发布时间】:2016-12-27 02:52:22
【问题描述】:

主要用例是使用 IPython 作为我自己的 Google 帐户的 CLI。我真正追求的是尽量减少启动 IPython shell 和实际对 API 发出有用调用之间的麻烦。

使用 Google API 进行身份验证的文档侧重于设置其他用户将用来访问其数据的应用程序。 这导致了涉及浏览器的冗长 Oauth 舞蹈,以允许其他用户在不损害其凭据的情况下进行身份验证。 但是,我不介意与自己分享我的私人凭据。我不打算分享代码。如果我确实共享了代码,我会使用 dotenv 之类的东西将凭据与代码分开。

Twitter 为开发者提供第二套凭据 这允许开发人员访问他们自己的帐户进行测试。 因此可以以编程方式访问自己的帐户 只需提供一组凭据:允许调用 API 的开发人员凭据和授予对开发人员自己数据的访问权限的其他凭据。对于example

from twitter import *

t = Twitter(
    auth=OAuth(token, token_key, con_secret, con_secret_key))

# Get your "home" timeline
t.statuses.home_timeline()

# Update your status
t.statuses.update(
    status="Tweeting from Python")

con_secret* 是开发人员凭据,并且 和token* 是帐户访问凭据。

  • 如何使用 Google API 做同样简单的事情?
  • 我在哪里可以获得访问自己帐户的凭据?
  • 如何在 Google API 中使用它们?

例如,从我自己的一个 Youtube 播放列表中检索内容的最简单过程是什么?


我认为 Python 无头浏览器库可以满足我的需求。我问了一个关于 SE Software Recommendations 的相关问题 https://softwarerecs.stackexchange.com/questions/35744/python-headless-browser-library-for-oauth2-authentication-from-ipython-console

【问题讨论】:

  • 有点困惑 - 所以你希望能够在没有 oauth 的情况下使用 API?还是不必每次都输入用户名/密码?
  • @JayIsTooCommon 我想下载一组凭据,一旦将它们存储在本地并使用它们就可以继续使用它们,而不是每次我想登录时都获得新的凭据,这是我理解的 google api 文档要说。据我了解,Twitter 也在使用 Ouath,但允许您通过 dotenv 之类的方式获取自己的用户凭据,继续重复使用它们。我在这里谈论的是用户凭据,而不是您以这种方式重用的开发凭据。

标签: google-api google-oauth google-authentication google-api-python-client headless-browser


【解决方案1】:

我想下载一组凭据

Google 通过其client_secrets.json 文件提供此功能。根据您要使用的帐户类型(Web 应用程序、已安装的应用程序、服务帐户),有不同的下载方法。可以在here 找到不同的技术。

在本地存储凭据并继续使用它们而不需要 每次通话都有新的凭据

这也不是问题,客户端密码在您续订之前一直有效 - AFAIK 除非您另有说明,否则不会自动到期。

下载client_secrets.json 后,将文件存储在非公共目录中(通常在项目目录/config 中)。

与下载文件类似,根据您使用的帐户类型,有不同的技术(流类)来使用 JSON 文件。例如,以下将用于已安装和 Web 应用程序;

from oauth2client.client import OAuth2WebServerFlow
...
flow = OAuth2WebServerFlow(client_id='your_client_id',
                           client_secret='your_client_secret',
                           scope='scope URL here',
                           redirect_uri='http://example.com/auth_return')

其他流类示例可以看here

希望这会有所帮助 - 如果您需要更多信息,可以在此处找到官方文档(被警告,可能非常不准确和令人困惑)https://developers.google.com/api-client-library/python/guide/aaa_oauth

【讨论】:

  • 您能否扩展“根据您使用的帐户类型,有不同的技术(流类)可以使用 JSON 文件”我主要想以交互方式使用 api来自 IPython 控制台。
猜你喜欢
  • 2011-10-12
  • 2017-03-01
  • 1970-01-01
  • 2011-03-06
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 2016-05-17
相关资源
最近更新 更多