如何在不使用argparse的情况下添加client_secret?

时间:2015-04-17 13:57:14

标签: python google-api-python-client oauth2client google-genomics

我想测试Google Genomics。我有一个项目,我可以从main.py运行getting started with the api。但是这些文件隐藏在oauth2client的引擎盖下,如何生成凭据:

import argparse
import httplib2
from apiclient.discovery import build
from collections import Counter
from oauth2client import tools
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import run_flow

# For these examples, the client id and client secret are command-line arguments
parser = argparse.ArgumentParser(description=__doc__,
    formatter_class=argparse.RawDescriptionHelpFormatter,
    parents=[tools.argparser])
parser.add_argument('--client_secrets_filename',
                    default='client_secrets.json',
                    help='The filename of a client_secrets.json file from a '
                         'Google "Client ID for native application" that '
                         'has the Genomics API enabled.')
flags = parser.parse_args()

# Authorization
storage = Storage('credentials.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
  flow = flow_from_clientsecrets(
    flags.client_secrets_filename,
    scope='https://www.googleapis.com/auth/genomics',
    message='You need to copy a client_secrets.json file into this directory, '
            'or pass in the --client_secrets_filename option to specify where '
            'one exists. See the README for more help.')
  credentials = run_flow(flow, storage, flags)

# Create a genomics API service
http = httplib2.Http()
http = credentials.authorize(http)

有人可以解释一下我的代码是什么吗?我怎么能把它转换成没有argparse的东西?

我尝试了google-api文档的其他解决方案,但重点是我不明白正在做什么,所以我无法理解我应该做什么。 (我也不完全了解OAuth2client) This answer表明argparse是强制性的。但this使用google-api-python-client的其他方式不要使用它......

2 个答案:

答案 0 :(得分:0)

argparse的目的是解析命令行选项。如果您计划在命令行中获取参数,那么使用argparse比使用参数更容易。

如果您想对参数进行硬编码(或以其他方式检索它们),您可以删除所有parser行,并将flags变量替换为适当的值(例如,对于客户机密码文件名)。

答案 1 :(得分:0)

如果您希望可以使用API​​密钥,这在实现服务器时更实用 - 尽管您不希望与任何人共享。以下两个很棒的链接描述了Oauth2协议如何在提供对Google API的访问方面发挥作用:

https://developers.google.com/identity/protocols/OAuth2

https://developers.google.com/identity/protocols/OAuth2WebServer

希望它有所帮助,