Ошибка 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)

Вернуться на верх