# Переходим в Google Cloud Console
https://console.cloud.google.com/
# Создаем новый проект или выбираем существующий
# Название проекта: например "my-drive-automation"
# В консоли переходим в "APIs & Services" > "Library"
# Находим и включаем следующие APIs:
1. Google Drive API
2. Google Sheets API
3. Google Apps Script API (опционально)
# Переходим в "APIs & Services" > "Credentials"
# Нажимаем "Create Credentials" > "OAuth client ID"
# Тип приложения: "Desktop application"
# Название: "Drive Automation Client"
# В "OAuth consent screen" настраиваем:
# - User Type: External (для личного использования)
# - App name: "My Drive Tools"
# ⚠️ Избегать в названии Google, Drive - блокирует, но `GCloud client` проходит
# - User support email: ваш email
🎯 Data Access: Scopes: добавляем нужные разрешения
{
"scopes": [
"https://www.googleapis.com/auth/drive.file",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/script.projects"
]
}
📝 Описание scopes
drive.file - 📁 доступ только к файлам, созданным приложениемdrive - 📁 доступ ко всем файламspreadsheets - 📊 чтение и запись Google Sheetsscript.projects - ⚡ управление Google Apps Script проектами📥 Скачивание credentials
# После создания OAuth client появится:
# - Client ID: длинная строка заканчивающаяся на .apps.googleusercontent.com
# - Client Secret: секретная строка
# Нажимаем "Download JSON" - скачиваем файл credentials.json
Структура файла credentials.json
{
"installed": {
"client_id": "your-client-id.apps.googleusercontent.com",
"project_id": "your-project-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "your-client-secret",
"redirect_uris": ["http://localhost"]
}
}
Перейди в Google Cloud Console:
🎯 После добавления тестового пользователя: 6. Подожди 5-10 минут (изменения применяются не сразу)
❌ НЕ ДЕЛАТЬ
✅ ПРАВИЛЬНО
.env файле🔧 Настройка переменных окружения
# Добавляем в .env файл:
GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET="your-client-secret"
GOOGLE_PROJECT_ID="your-project-id"
# Или путь к JSON файлу:
GOOGLE_CREDENTIALS_FILE="/path/to/credentials.json"
⚡ Быстрая проверка через curl
OAuth2_test.sh
#!/bin/bash
CLIENT_ID="MY CLIENT_ID"
CLIENT_SECRET="MY_CLIENT_SECRET"
REDIRECT_URI="urn:ietf:wg:oauth:2.0:oob" # Для копирования кода вручную
SCOPE="https://www.googleapis.com/auth/drive.file"
# 1. Открываем URL для авторизации
AUTH_URL="https://accounts.google.com/o/oauth2/auth"
AUTH_URL+="?client_id=$CLIENT_ID"
AUTH_URL+="&redirect_uri=$REDIRECT_URI"
AUTH_URL+="&scope=$SCOPE"
AUTH_URL+="&response_type=code"
AUTH_URL+="&access_type=offline"
echo "🌐 Откройте в браузере:"
echo "$AUTH_URL"
echo ""
echo "📋 После авторизации скопируйте код и вставьте сюда:"
read -p "Введите authorization code: " AUTH_CODE
# 2. Обмениваем code на access_token
if [[ -z "$CLIENT_SECRET" ]]; then
echo "❌ Добавьте CLIENT_SECRET в скрипт!"
exit 1
fi
echo "🔄 Получаем access token..."
curl -s -X POST https://oauth2.googleapis.com/token \
-d "client_id=$CLIENT_ID" \
-d "client_secret=$CLIENT_SECRET" \
-d "code=$AUTH_CODE" \
-d "grant_type=authorization_code" \
-d "redirect_uri=$REDIRECT_URI" \
| jq '.'
Токен копируем и сохраняем в token.json
❌ Проблема: "Error 403: access_denied" Решение
❌ Проблема: "invalid_client" Решение
❌ Проблема: "redirect_uri_mismatch" Решение
http://localhost:8080 или urn:ietf:wg:oauth:2.0:oob