Код, не создающий токен доступа при аутентификации учетной записи для Google API

#python #google-api #google-oauth #google-calendar-api #google-api-python-client

Вопрос:

Когда я запускаю свой код, я могу войти в систему, но как только я пытаюсь пройти аутентификацию, сервер выходит из строя, и я предполагаю, что это связано с тем, что я не получаю никаких токенов доступа. Я не уверен, куда идти дальше. Я скачал это .файл json для моих учетных данных и его название «учетные данные.json»

Это мое Google.py

 import pickle import os import datetime from google_auth_oauthlib.flow import Flow, InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaFileUpload, MediaIoBaseDownload from google.auth.transport.requests import Request   def Create_Service(client_secret_file, api_name, api_version, *scopes, prefix=''):  CLIENT_SECRET_FILE = client_secret_file  API_SERVICE_NAME = api_name  API_VERSION = api_version  SCOPES = [scope for scope in scopes[0]]    cred = None  working_dir = os.getcwd()  token_dir = 'token files'  pickle_file = f'token_{API_SERVICE_NAME}_{API_VERSION}{prefix}.pickle'   ### Check if token dir exists first, if not, create the folder  if not os.path.exists(os.path.join(working_dir, token_dir)):  os.mkdir(os.path.join(working_dir, token_dir))   if os.path.exists(os.path.join(working_dir, token_dir, pickle_file)):  with open(os.path.join(working_dir, token_dir, pickle_file), 'rb') as token:  cred = pickle.load(token)   if not cred or not cred.valid:  if cred and cred.expired and cred.refresh_token:  cred.refresh(Request())  else:  flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)  cred = flow.run_local_server()   with open(os.path.join(working_dir, token_dir, pickle_file), 'wb') as token:  pickle.dump(cred, token)   try:  service = build(API_SERVICE_NAME, API_VERSION, credentials=cred)  print(API_SERVICE_NAME, API_VERSION, 'service created successfully')  return service  except Exception as e:  print(e)  print(f'Failed to create service instance for {API_SERVICE_NAME}')  os.remove(os.path.join(working_dir, token_dir, pickle_file))  return None  def convert_to_RFC_datetime(year=1900, month=1, day=1, hour=0, minute=0):  dt = datetime.datetime(year, month, day, hour, minute, 0).isoformat()   'Z'  return dt  if __name__ == '__main__':  API_NAME = 'calendar'  API_VERSION = 'v3'  SCOPES = ['https://www.googleapis.com/auth/calendar']  CLIENT_FILE = 'client-secret.json'  service = Create_Service(CLIENT_FILE, API_NAME, API_VERSION, SCOPES, 'x')  

Это мой код для запуска

 from pprint import pprint from Google import Create_Service  CLIENT_SECRET_FILE = 'credentials.json' API_NAME = 'calendar' API_VERSION = "v3" SCOPES = ['https://www.googleapis.com/auth/calendar']  service = Create_Service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)  

Комментарии:

1. Как вы подключаетесь к своему серверу? Вы должны быть на компьютере, чтобы иметь возможность открыть всплывающее окно для аутентификации.

2. Это открывает safari для входа в мою учетную запись gmail, и я использую код Visual Studio

3. @MattNguyen Я тестирую ваш код и работаю на меня. Не могли бы вы поделиться скриншотом с тем, что вы называете «сбоем сервера»? Консоль возвращает какую-либо ошибку?

4. Он просто открывает страницу, на которой говорится, что не удалось загрузить, я не получаю никаких токенов авторизации