授权python脚本在没有OAuth2用户流的情况下访问GData API

时间:2016-07-30 00:24:30

标签: python gdata oauth2

我正在编写一个小的python脚本,它将检索我的Google通讯录列表(使用Google Contacts API)并随机建议一个人让我联系(自动与朋友保持联系的好方法! )

这只是我计划在cron作业上安排的独立脚本。问题是Google似乎需要OAuth2样式身份验证,其中用户(我)必须批准访问权限,然后应用程序会收到授权令牌,然后我可以使用该令牌来查询用户(我的)联系人。

由于我只访问自己的数据,有没有办法“自我预授权”?理想情况下,我希望能够检索一些授权令牌然后我运行脚本并将该令牌作为环境变量传递

AUTH_TOKEN=12345 python my_script.py

这样,它不需要用户输入/交互来授权它一次。

1 个答案:

答案 0 :(得分:1)

您所描述的实施会调用完整的“三足”OAuth握手,这需要明确的用户同意。如果您不需要用户同意,则可以通过Google service account使用“双腿”OAuth,该granted permission应用相关联,而不是用户。在您oauth2client到您的服务帐户后访问联系人后,您可以使用ServiceAccountCredentials class Google service account documentation直接访问GData,而无需用户同意。

以下是https://jsfiddle.net/8n2b7x0s/

中的双腿认证示例
import json

from httplib2 import Http

from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build

scopes = ['https://www.googleapis.com/auth/sqlservice.admin']

credentials = ServiceAccountCredentials.from_json_keyfile_name(
        'service-account.json', scopes)

sqladmin = build('sqladmin', 'v1beta3', credentials=credentials)
response = sqladmin.instances().list(project='examinable-example-123').execute()

print response