如何使用Google Drive SDK 2和没有人工交互的Python获取OAuth凭据
作者:互联网
我有一个Python应用程序,它从第三方源获取数据,选择一个子集,然后将其写入CSV文件,然后上传到Google Drive并转换为电子表格.我希望将其作为cron作业运行,但目前SDK需要人员与浏览器进行交互以获取OAuth凭据.
我搜索了Drive SDK文档,但没有找到任何帮助.我还尝试使用mechanize库自动执行OAuth流程失败.我确定我错过了什么.我无法相信Drive API需要人工干预.建议?
我已经咨询了https://developers.google.com/accounts/docs/OAuth2WebServer#overview,这就是我的尝试.
flow = OAuth2WebServerFlow(settings.CLIENT_ID, settings.CLIENT_SECRET
setings.OAUTH_SCOPE,settings.REDIRECT_URI)
authorize_url = flow.step1_get_authorize_url()
创建请求网址:
https://accounts.google.com/o/oauth2/auth?
scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&
redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&
response_type=code&
client_id=999637210521.apps.googleusercontent.com&
access_type=offline
然后使用请求库我发出:
r = req.get(authorize_url)
但响应正文是一个没有代码的HTML文档.
解决方法:
我之前也有同样的问题.
解决方案:保存凭据以备将来使用.请参阅以下网址:
https://developers.google.com/accounts/docs/OAuth2#installed
https://developers.google.com/accounts/docs/OAuth2InstalledApp
from oauth2client.file import Storage
...
storage = Storage('a_credentials_file')
storage.put(credentials)
...
credentials = storage.get()
我推送了我的脚本,我正在重新使用凭据创建新的令牌,github.
https://github.com/sukujgrg/google_drive
标签:python,google-drive-sdk 来源: https://codeday.me/bug/20190709/1411929.html