我想测试谷歌基因组学。我有一个项目,我可以从 API 入门开始运行 main.py。但是这个文件隐藏在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)
有人可以解释我代码是什么吗?我怎么能把它转换成没有参数的东西?
我尝试了google-api文档的其他解决方案,但重点是我不明白正在做什么,所以我无法理解我应该做什么。 (我也不完全了解OAuth2client)这个答案表明 argparse 是强制性的。但是这种使用google-api-python-client的另一种方式不要使用它...
可以使用API密钥,这在实现服务器时更实用 - 尽管您不想与任何人共享它。 以下是两个很棒的链接,描述了Oauth2协议如何在提供对Google的API的访问方面工作:
https://developers.google.com/identity/protocols/OAuth2
https://developers.google.com/identity/protocols/OAuth2WebServer
希望对您有所帮助,
保罗
argparse 的目的是解析命令行选项。 如果您打算在命令行中获取参数,则使用 argparse 比不使用参数要容易得多。
如果要对参数进行硬编码(或以其他方式检索它们),只需删除所有parser
行,并将flags
变量替换为适当的值(例如,用于客户端机密文件名)。