3

GMail API にアクセスするために資格情報を認証しようとしています。以前は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 は、Python に渡す引数ではありません。

解析された引数を変更するとflags = parser.parse_args(['--noauth_local_webserver'])、エラーは発生しませんが、何も起こりません。

可能な限り厳密flagにシミュレートするにはどれを使用する必要があり、どのように解析する必要がありますか?run()

編集:メソッドを使用しrun()て資格情報を認証する場合、アクセスされる URL は次のとおりです: http://localhost:8080/?code=4/myuniqueID(例では一意の ID がありません)

4

2 に答える 2

8

このために必要なことは、このように argparser に引数の空のリストを渡すことです

flags = tools.argparser.parse_args(args=[])
credentials = tools.run_flow(flow, storage, flags)
于 2015-01-02T01:06:32.593 に答える