使用Python Google API进行身份验证的最简单方法是访问自己的帐户

时间:2016-08-19 21:00:13

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

主要用例是将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

1 个答案:

答案 0 :(得分:6)

  

我想下载一套凭据

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

  

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

这也不是问题,客户机密在您续订之前有效 - 除非另有说明,否则A​​FAIK没有自动到期。

下载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