编程语言
首页 > 编程语言> > 如何使用Google Drive SDK 2和没有人工交互的Python获取OAuth凭据

如何使用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