Какой флаг для run flow () будет имитировать теперь устаревший запуск()
Я пытаюсь аутентифицировать свои учетные данные для доступа к API GMail. Ранее я делал это с помощью run()
метод из OAuth2 и код credentials = tools.run(flow, STORAGE, http=http)
, но теперь это устаревший метод. Теперь я использую run_flow()
метод проверки подлинности моих учетных данных.
import httplib2
import argparse
from apiclient import errors
from apiclient.discovery import build
from oauth2client import tools
from oauth2client.file import Storage
from oauth2client.client import flow_from_clientsecrets
CLIENT_SECRET_FILE = 'your_client_secret.json'
OAUTH_SCOPE = 'https://www.googleapis.com/auth/gmail.modify'
STORAGE = Storage('gmail.storage')
flow = flow_from_clientsecrets(CLIENT_SECRET_FILE, scope=OAUTH_SCOPE)
http = httplib2.Http()
credentials = STORAGE.get()there are credentials, no reauth is needed
#parser = argparse.ArgumentParser(parents=[tools.argparser])
#flags = parser.parse_args() #Put your arguments in the parenthesis
if credentials is None or credentials.access_token_expired:
credentials = run(flow, STORAGE, http=http)
#credentials = tools.run_flow(flow, STORAGE, flags, http=http)
http = credentials.authorize(http)
gmail_service = build('gmail', 'v1', http=http)
Строкис комментариями - это код, который использует run_flow()
, а не run()
.
Закомментированный код выдает мне ошибку: run.py: error: unrecognized arguments: AdminTests
, AdminTests - это не аргумент, который я даю Питон.
И когда я изменяю разбираемые аргументы на flags = parser.parse_args(['--noauth_local_webserver'])
, я не получаю ошибки, но ничего не происходит.
Какой flag
я должен использовать, чтобы смоделировать run()
как можно ближе и как я должен разобрать его?
Edit: при использовании метода run()
для аутентификации моих учетных данных URL-адрес, к которому обращаются, является:
http://localhost:8080/?code=4/myuniqueID
(в Примере отсутствует Мой уникальный идентификатор)
2 ответа:
Для этого вам нужно передать пустой список args в argparser следующим образом
flags = tools.argparser.parse_args(args=[]) credentials = tools.run_flow(flow, storage, flags)
После сравнения вашего кода с исходным кодом OAuth
run
иrun_flow
, оказывается, что существует существенная разница между тем, включаете ли вы Аргументhttp
.Итак,
tools.run(flow, STORAGE, http=http)
Можно смоделировать с помощью,
tools.run_flow(flow, STORAGE, flags, http=http)
Но у тебя есть,
tools.run_flow(flow, STORAGE, flags)