有没有办法自动授予google auth2的权限

时间:2016-08-06 09:07:48

标签: oauth-2.0 google-spreadsheet-api google-oauth2

我们正在尝试使用oauth2.0身份验证来使用google电子表格api。我们使用google api文档中的以下代码进行oauth身份验证

def get_credentials():
        CLIENT_SECRET_FILE = 'client_secret.json'
        SCOPES=[
          'https://www.googleapis.com/auth/spreadsheets'
        ]
        APPLICATION_NAME = 'Knab'
        home_dir=os.path.expanduser('~')
        credential_dir=os.path.join(home_dir,'.credentials')
        if not os.path.exists(credential_dir):
            os.makedirs(credentials_dir)
        credential_path=os.path.join(credential_dir,'knab.json')
        store=oauth2client.file.Storage(credential_path)
        credentials=store.get()
        if not credentials or credentials.invalid:
            flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE,SCOPES)
            flow.user_agent=APPLICATION_NAME
            if flags:
                credentials=tools.run_flow(flow,store,flags)
            else:
                credentials=tools.run(flow,store)
        return credentials;

    credentials=get_credentials()
    http=credentials.authorize(httplib2.Http())
    discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
                        'version=v4')
    service = discovery.build('sheets', 'v4', http=http,
                                  discoveryServiceUrl=discoveryUrl)

我创建了oauth2密钥并传递了json文件(client_secret.json),一切运行良好,但是当我们运行新代码时 机器,它要求我们打开谷歌链接并使用凭据登录并单击允许。我们即将把亚马逊lambda作为 微服务。所以,不应该有人工干预。我试图使用--noauth_local_webserver作为命令行参数运行。 它要求访问该URL并输入代码。我的想法是SSH一台不同的机器,运行一个selenium代码打开网址并登录 我的google凭据,允许permissison并将代码返回给程序。我有个主意,但不知道如何实现它, 欢迎任何建议....

0 个答案:

没有答案