Как добавить client_secret без использования argparser?

Я хочу проверить Google Genomics. У меня есть проект, и я могу запустить main.py с самого начала с 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) Этот ответ предполагает, что argparse является обязательным. Но этот другой способ использования google-api-python-client не использовать...

2 ответа

Решение

Если вы хотите, вы можете вместо этого использовать ключ API, что более практично при внедрении серверов - хотя вы не захотите делиться им с кем-либо. Ниже приведены две замечательные ссылки, которые описывают, как протокол Oauth2 обеспечивает доступ к API Google:

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

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

Надеюсь, поможет,

Павел

Цель argparse - проанализировать параметры командной строки. Если вы планируете принимать аргументы в командной строке, с argparse это намного проще, чем без.

Если вы хотите жестко закодировать аргументы (или получить их каким-либо другим способом), вы можете просто удалить все parser линии, и заменить flags переменная с соответствующими значениями (например, для файла секретов клиента).

Другие вопросы по тегам