#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. Он просто открывает страницу, на которой говорится, что не удалось загрузить, я не получаю никаких токенов авторизации