Я пытаюсь создать бота Discord, который взаимодействует с Google API, в частности с Google Classroom API, поэтому я создал новый проект из консоли Google и создал новый клиент OAuth для веб-приложения. Я также включил Classroom API и выбрал все области, которые хотел использовать:
['https://www.googleapis.com/auth/classroom.course-work.readonly',
'https://www.googleapis.com/auth/classroom.student-submissions.students.readonly',
'https://www.googleapis.com/auth/classroom.courses.readonly']
Затем я настроил свою программу на Python на примере Google (сначала я написал свою, используя документацию, но получил тот же результат). Когда я запускаю пример кода, все идет нормально, он открывает браузер и просит меня выбрать свою учетную запись, я выбираю свою школьную учетную запись, и когда она загружается, я ожидаю, что экран авторизации появится, чтобы спросить меня, разрешаю ли я запрошенные данные. говорит, что что-то пошло не так, без сообщений об ошибках. Я загрузил правильную папку credentials.json
из панели управления Google и использовал ее в своей программе.
Я также предоставлю упрощенный код, который я написал, возможно, это проблема.
import pickle
import os
from google_auth_oauthlib.flow import Flow, InstalledAppFlow
from googleapiclient.discovery import build
from google.auth.transport.requests import Request
CLIENTSECRETPATH = "credentials.json"
APISERVICENAME = "classroom"
APIVERSION = "v1"
SCOPES = ['https://www.googleapis.com/auth/classroom.course-work.readonly', 'https://www.googleapis.com/auth/classroom.student-submissions.students.readonly', 'https://www.googleapis.com/auth/classroom.courses.readonly']
cred = None
if os.path.exists("toke.pickle"):
with open("tiken.pickle", "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(CLIENTSECRETPATH, SCOPES)
cred = flow.run_local_server()
with open("token.pickle", "wb") as token:
pickle.dump(cred, token)
try:
service = build(APISERVICENAME, APIVERSION, credentials=cred)
except Exception as e:
print(e)
Изменить: я попытался изменить некоторые настройки на консоли Google и случайно решил нажать кнопку «Опубликовать», поскольку проект все еще находился в состоянии тестирования, после чего я смог войти в систему без ошибок. Но это все еще не объясняет, почему он не работал, когда он был в статусе тестирования. Я добавил свой школьный адрес электронной почты в список тестовых пользователей и убедился, что все сделал правильно для тестирования.