Ошибка 400: redirect_uri_mismatch при запуске проекта django
Новичок здесь! Я хочу загрузить все изображения из папки google drive и затем показать их в базовом html.
Я пытаюсь пройти аутентификацию в google, чтобы получить доступ к папке, но когда я пытаюсь, всегда получаю эту ошибку (https://i.stack.imgur.com/Dl52o.png) Странно то, что порт меняется каждый раз, когда я запускаю проект. (https://i.stack.imgur.com/4YQuS.png)
Сервер работает на порту 8000 на localhost.
Вот код для views.py
from django.shortcuts import render
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
from google.auth.transport.requests import Request
from pathlib import Path
import os
# Google Drive API scopes
SCOPES = ['https://www.googleapis.com/auth/drive.readonly']
# Path to credentials file
credentials_path = 'credentials.json'
def index(request):
# Load existing credentials if available
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
else:
# If not available, initiate OAuth 2.0 flow
flow = InstalledAppFlow.from_client_secrets_file(credentials_path, SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for future use
with open('token.json', 'w') as token_file:
token_file.write(creds.to_json())
# Build the Google Drive service
service = build('drive', 'v3', credentials=creds)
# Google Drive folder ID
folder_id = myfolderID
# Create the target directory if it doesn't exist
target_dir = os.path.join(Path(__file__).resolve().parent, 'images')
os.makedirs(target_dir, exist_ok=True)
# List files in the specified folder
response = service.files().list(q=f"'{folder_id}' in parents and mimeType='image/jpeg'",
fields='files(id, name)').execute()
files = response.get('files', [])
# Download each image
image_sources = []
for file in files:
file_id = file['id']
file_name = file['name']
file_path = os.path.join(target_dir, file_name)
# Check if the image already exists
if not os.path.exists(file_path):
# Download the image
request = service.files().get_media(fileId=file_id)
with open(file_path, 'wb') as fh:
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
image_sources.append(file_path)
# Render the index.html template with the downloaded image sources
return render(request, 'index.html', {'image_sources': image_sources})
Я уже добавил URI в список разрешенных URI для перенаправления в Google Cloud Console. Попробовал в приватном режиме, очистил кэш и запустил проект несколько раз.
Я также добавил себя в качестве тестового пользователя на экране согласия OAuth.
(https://i.stack.imgur.com/hI198.png)