0

我正在开发一个报告系统,它会在一夜之间自动更新结果并将它们放在谷歌驱动器上的文件中。它现在的工作方式是对登录名和密码信息进行硬编码,即使它有效,这也绝不是理想的。在 StackOverflow 中搜索并没有具体指出这个问题,这让我感到惊讶。一个包含相关代码部分的非常简化的示例如下所示:

import gdata.docs.service

class GDrive(object):
    def __init__(self, email, password)
        self.gd_client = gdata.docs.service.DocService()
        self.gd_client.ClientLogin(email, password)
    def upload(self):
        # Code to Upload file somewhere in GDrive.

gd = GDrive("the@email.address", "ThePassword")
gd.upload()

可以做些什么来避免显式写入用户名和密码吗?

4

2 回答 2

1
import gdata.docs.service
import sys

class GDrive(object):
    def __init__(self, email, password)
        self.gd_client = gdata.docs.service.DocService()
        self.gd_client.ClientLogin(email, password)
    def upload(self):
        # Code to Upload file somewhere in GDrive.


if __name__ == "__main__":
    username = sys.argv[1]
    password = sys.argv[2]

    gd = GDrive(username, password)
    gd.upload()

现在从你的命令行运行,就像你的 python 脚本的名称在script.py the@email.address ThePassword哪里......script.py

于 2012-10-19T18:57:48.613 回答
1

我会使用 OAuth2 协议。这是一种长时间(但不是永远)存储凭据的安全方式。

我的手机有一个简短的回答,但请检查:

https://developers.google.com/drive/about-auth

这一点使得使用 Oauth2 变得更加容易:

https://developers.google.com/api-client-library/python/platforms/google_app_engine#Decorators

于 2012-10-19T21:25:58.290 回答