[PYTHON] gflags없이 Google 애널리틱스 자격증 명을 얻는 방법 - run_flow ()를 대신 사용 하시겠습니까?
PYTHONgflags없이 Google 애널리틱스 자격증 명을 얻는 방법 - run_flow ()를 대신 사용 하시겠습니까?
설명하는 데는 몇 초가 걸릴 수 있으므로 나와 함께 참아주십시오.
Google Analytics 데이터를 가져와야하는 작업을위한 프로젝트를 진행하고 있습니다. 원래이 링크를 따라했기 때문에 API 클라이언트 pip install -upgrade google-api-python-client를 설치하고 client_secrets.json과 같은 설정을 한 후 run ()을 실행하기 위해 gflags를 설치해야했습니다. 성명서. (즉, 자격증 명 = 실행 (FLOW, 저장))
이제 gflags를 설치하기 위해 오류 메시지가 표시되거나 run_flow ()를 사용하는 것이 좋습니다 (정확한 오류 메시지는 this).
원래 gflags (몇 달 전)를 사용했지만 프레임 워크 (피라미드)와 호환되지 않았으므로 문제가 무엇인지 파악할 때까지 제거했습니다. 그리고 gflags에서 run_flow ()로 전환하는 것이 바람직한 이유는 gflags가 더 이상 사용되지 않으므로 사용하지 않으려 고합니다. 내가 지금하고있는 일은 run_flow ()를 사용하는 것으로 전환하는 것이다.
이 문제는 run_flow ()가 명령 줄 인수를 보내고 명령 줄 응용 프로그램이 아니라는 것을 예상합니다. 도움이되었지만 run_flow () 함수에 대한 플래그를 작성해야하는 설명서가 있습니다.
설명하기 전에 코드 하나를 보여주기 전에.
run_flow ()는 세 개의 인수를 취합니다 (여기의 문서). run ()과 마찬가지로 플로우와 저장 공간을 필요로하지만 flags 객체도 필요합니다. gflags 라이브러리는 oauth2client 실행 메소드에서 사용 된 플래그 ArgumentParser 객체를 만들었습니다.
argumentParser 객체를 만드는 데 도움이되는 몇 가지 다른 링크 :
두 번째 링크는 실행 방법을 이해하는 데 매우 도움이되므로 유사한 작업을 수행하려고 할 때 sys.argv는 pserve를 실행중인 내 가상 환경의 위치를 가져오고 .ini 파일도 가져옵니다. 내 컴퓨터에 대한 자격 증명을 저장하여 가상 환경을 실행합니다.) 하지만 그게 뭔가 다른 것을 기대하기 때문에 오류가 발생합니다. 그리고 이것이 내가 붙어있는 곳입니다.
암호:
CLIENT_SECRETS = client_file.uri
MISSING_CLIENT_SECRETS_MESSAGE = '%s is missing' % CLIENT_SECRETS
FLOW = flow_from_clientsecrets(
CLIENT_SECRETS,
scope='https://www.googleapis.com/auth/analytics.readonly',
message=MISSING_CLIENT_SECRETS_MESSAGE
)
TOKEN_FILE_NAME = 'analytics.dat'
def prepare_credentials(self, argv):
storage = Storage(self.TOKEN_FILE_NAME)
credentials = storage.get()
if credentials is None or credentials.invalid:
parser = argparse.ArgumentParser(description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter,
parents=[tools.argparser])
flags = parser.parse_args(argv[1:]) # i could also do just argv, both error
credentials = run_flow(self.FLOW, storage, flags)
return credentials
def initialize_service(self, argv):
http = httplib2.Http()
credentials = self.prepare_credentials(self, argv)
http = credentials.authorize(http)
return build('analytics', 'v3', http=http)
initialize_service를 호출하는 sys.argv를 전달하는 주 함수를 호출합니다.
def main(self, argv):
service = self.initialize_service(self, argv)
try:
#do a query and stuff here
내 응용 프로그램이 명령 줄 응용 프로그램이 아니라 오히려 완전한 통합 서비스이기 때문에 이것이 효과가 없을 것이라는 것을 알았지 만 나는 가치가 있다고 생각했습니다. flags 객체를 올바르게 작성하는 방법에 대한 생각은?
해결법
-
==============================
1.
from oauth2client import tools flags = tools.argparser.parse_args(args=[]) credentials = tools.run_flow(flow, storage, flags)
조금 비틀 거 렸지만 두 개의 함정을 빠져 나갔다.
-
==============================
2.이 코드 조각은 나를 위해 Gmail API를 위해 작동합니다.
이 코드 조각은 나를 위해 Gmail API를 위해 작동합니다.
(이 링크도 도움이되었습니다.) 명령 줄 도구
import argparse import httplib2 from oauth2client.tools import run_flow from oauth2client.tools import argparser from oauth2client.file import Storage CLIENT_SECRETS_FILE = "your_file.json" OAUTH_SCOPE = 'https://www.googleapis.com/auth/gmail.readonly' STORAGE = Storage("storage") flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, scope=OAUTH_SCOPE) http = httplib2.Http() credentials = STORAGE.get() if credentials is None or credentials.invalid: #magic parser = argparse.ArgumentParser(parents=[argparser]) flags = parser.parse_args() credentials = run_flow(flow, STORAGE, flags, http=http) http = credentials.authorize(http) gmApi = build('gmail', 'v1', http=http) # ...
-
==============================
3.전달할 수있는 플래그는 다음에서 찾을 수 있습니다.
전달할 수있는 플래그는 다음에서 찾을 수 있습니다.
--auth_host_name: Host name to use when running a local web server to handle redirects during OAuth authorization. (default: 'localhost') --auth_host_port: Port to use when running a local web server to handle redirects during OAuth authorization.; repeat this option to specify a list of values (default: '[8080, 8090]') (an integer) --[no]auth_local_webserver: Run a local web server to handle redirects during OAuth authorization. (default: 'true')
나는 정확히 이들을 파싱하는 방법을 알아 내려고 노력했지만,이 3 가지 플래그 각각에 대해 다양한 값을 전달하려고 시도했지만 아무 것도 작동하지 않습니다. 대답 할 때 너에게 쓸모있는 질문이 여기에있다.
from https://stackoverflow.com/questions/24890146/how-to-get-google-analytics-credentials-without-gflags-using-run-flow-instea by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 장고 관리자 - 모든 필드를 읽기 전용으로 만들기 (0) | 2018.11.29 |
---|---|
[PYTHON] 파이썬에서 오버랩 컴퓨팅을위한 내장 함수 (0) | 2018.11.29 |
[PYTHON] 다중 매개 변수 괄호가있는 파이썬 함수 (0) | 2018.11.29 |
[PYTHON] 파이썬에서 두 날짜 문자열 비교하기 (0) | 2018.11.29 |
[PYTHON] TypeError : b'1 '은 JSON 직렬 가능하지 않습니다. (0) | 2018.11.29 |