Я создаю веб-приложение на Django с использованием allauth для аутентификации через OAuth2. Когда я пытаюсь войти через Google, меня блокирует сообщение о том, что могут использоваться только “тестовые пользователи” до завершения верификации. Однако я являюсь владельцем проекта Google Cloud, где я настроил учетные данные OAuth2, создал эти учетные данные, сгенерировал client ID и secret, и добавил их в мое Django-приложение. Я единственный пользователь, владелец проекта Google Cloud, и у меня есть только один набор учетных данных с тем же client ID и secret.
Почему меня блокируют как тестового пользователя, если я являюсь владельцем проекта? Я уже пробовал создавать новый проект с новыми учетными данными, но проблема сохраняется. Я также обнаружил, что тестовые пользователи настраиваются в разделе “аудитория” (audience), а не в “согласии OAuth” (OAuth consent), но когда я пытался добавить себя как тестового пользователя, система сообщила, что я не имею на это права. ИИ-ассистенты подтвердили, что как владелец я не могу быть тестовым пользователем, потому что я автоматически обладаю этими привилегиями.
Краткий ответ
Вы сталкиваетесь с этой проблемой, потому что Google по умолчанию рассматривает новые OAuth-приложения как непроверенные, ограничивая доступ только к “тестовым пользователям” до прохождения процесса верификации приложения в Google. Как владелец проекта, вы обладаете административными привилегиями для вашего проекта Google Cloud, но автоматически не получаете права быть тестовым пользователем для вашего собственного OAuth-приложения. Именно поэтому вы видите сообщение “могут использоваться только тестовые пользователи”, несмотря на то что вы являетесь владельцем проекта.
Содержание
- Процесс верификации OAuth в Google
- Почему владельцы проектов не могут быть тестовыми пользователями
- Правильная настройка экрана согласия OAuth
- Шаги для верификации вашего OAuth-приложения Google
- Устранение распространенных проблем
- Альтернативные решения
Процесс верификации OAuth в Google
Google реализует процесс верификации для OAuth-приложений с целью повышения безопасности и обеспечения правильного использования пользовательских данных. Когда вы создаете новый OAuth2 client ID в вашем проекте Google Cloud, Google автоматически классифицирует его как “непроверенное” приложение. Эта классификация не отражает ваши действия или намерения, а является стандартным протоколом безопасности Google.
Важно: Верификация требуется для приложений, которые будут использоваться пользователями вне вашей организации, даже если вы являетесь разработчиком и владельцем.
В период верификации ваше OAuth-приложение ограничено:
- Только пользователями, явно добавленными в качестве “тестовых пользователей”
- Вашим доменом Google Workspace (если применимо)
- Личными учетными записями, которые вы специально авторизовали
Это временное ограничение служит нескольким целям:
- Предотвращает несанкционированный доступ приложений к данным пользователей Google
- Позволяет Google проверить политику конфиденциальности и разрешения вашего приложения
- Обеспечивает правильную настройку экранов согласия OAuth перед публичным выпуском
Процесс верификации обычно занимает несколько дней, в течение которых ваше приложение остается в этом ограниченном состоянии. Именно поэтому вы видите сообщение о том, что “доступны только тестовые пользователи”, несмотря на то что вы являетесь владельцем проекта.
Почему владельцы проектов не могут быть тестовыми пользователями
Это важный момент, который вызывает путаницу у многих разработчиков. Как владелец проекта Google Cloud, вы автоматически получаете повышенные привилегии, которые включают:
- Полный административный доступ к проекту
- Возможность создания и управления OAuth-учетными данными
- Право изменять настройки и конфигурации проекта
Однако эти привилегии владельца не автоматически делают вас eligible быть тестовым пользователем для вашего собственного OAuth-приложения. Вот почему:
Система OAuth Google рассматривает тестовых пользователей иначе, чем владельцев проектов. Тестовые пользователи специально предназначены для разработки и тестирования, позволяя разработчикам проверять корректность работы их приложений перед публичным выпуском. По определению, тестовые пользователи являются внешними по отношению к структуре разработки и владения приложением.
Когда вы пытаетесь добавить себя в качестве тестового пользователя, система Google распознает вас как владельца проекта и отображает сообщение “не eligible”, потому что:
- Конфликт интересов: Разрешение владельцам быть тестовыми пользователями могло бы обойти требования верификации
- Модель безопасности: Google поддерживает четкое разделение между ролями разработки и пользователей
- Журнал аудита: Отделение тестовых пользователей обеспечивает более четкие журналы использования и аналитику
Это разделение является намеренным и защищает как разработчиков, так и пользователей, обеспечивая соблюдение правильных процессов верификации перед тем, как приложения смогут получить доступ к пользовательским данным.
Правильная настройка экрана согласия OAuth
Экран согласия OAuth является критически важным компонентом настройки OAuth в Google, который многие разработчики упускают из виду или настраивают неправильно. Именно здесь вы определяете, как ваше приложение будет представлять пользователям в процессе аутентификации.
Для правильной настройки экрана согласия OAuth:
-
Доступ к консоли Google Cloud → Перейдите в “API и сервисы” → “Экран согласия OAuth”
-
Выберите тип пользователя:
- Для большинства приложений выберите “Внешний”
- Если используется внутри вашей организации, выберите “Внутренний”
-
Заполните обязательную информацию:
- Название приложения: Имя, которое пользователи будут видеть при аутентификации
- Email поддержки пользователей: Контактная информация для вопросов, связанных с аутентификацией
- Контактная информация разработчика: Ваши контактные данные
-
Настройте области доступа (scopes):
- Добавьте конкретные разрешения, которые вашему приложению нужны (например, Gmail, Календарь и т.д.)
- Будьте точными и запрашивайте только необходимые разрешения
-
Добавьте тестовых пользователей:
- Здесь вы добавляете email-адреса людей, которые могут тестировать ваше приложение
- Поскольку вы не можете добавить себя, добавьте другую Google-учетную запись, которой вы владеете или имеете доступ
- Эти пользователи смогут проходить аутентификацию, пока ваше приложение находится в процессе верификации
Ключевое понимание здесь заключается в том, что конфигурация экрана согласия OAuth напрямую влияет на то, кто может проходить аутентификацию в вашем приложении. Правильная настройка этого экрана необходима как для процесса верификации, так и для пользовательского опыта.
Шаги для верификации вашего OAuth-приложения Google
После правильной настройки экрана согласия OAuth следующим шагом является завершение процесса верификации в Google. Вот как это сделать:
1. Подготовьте ваше приложение к верификации
Перед отправкой приложения на верификацию:
- Убедитесь, что ваше приложение имеет работающую политику конфиденциальности
- Проверьте, что цель и функциональность вашего приложения соответствуют запрашиваемым разрешениям
- Протестируйте поток аутентификации с вашими тестовыми пользователями
- Документируйте использование Google API вашим приложением
2. Отправьте на верификацию
- В настройках экрана согласия OAuth вы увидите статус, указывающий “Верификация не требуется” или подобное
- Нажмите “Верифицировать”, чтобы начать процесс
- Заполните форму заявки на верификацию:
- Веб-сайт вашего приложения
- Основная контактная информация
- Подробное описание функциональности вашего приложения
- Объяснение того, как вы будете использовать запрашиваемые Google API
3. Процесс рассмотрения
После отправки:
- Google рассмотрит ваше приложение (обычно 3-7 рабочих дней)
- Вы можете получить запросы на дополнительную информацию
- Следите за почтой на предмет сообщений от команды верификации Google
4. После верификации
После успешной верификации:
- Статус вашего приложения изменится на “Верифицировано”
- Все пользователи (не только тестовые) смогут проходить аутентификацию
- При желании вы можете удалить ограничения для тестовых пользователей
Устранение распространенных проблем
Даже при правильной настройке вы можете столкнуться с проблемами в процессе настройки OAuth. Вот распространенные проблемы и их решения:
Проблема: Ошибка “Тестовый пользователь не eligible”
Решение: Как установлено, вы не можете добавить себя в качестве тестового пользователя. Вместо этого:
- Создайте отдельную Google-учетную запись для тестирования
- Добавьте эту учетную запись в качестве тестового пользователя
- Используйте эту учетную запись для тестирования вашего Django-приложения во время разработки
Проблема: Учетные данные не работают после добавления тестового пользователя
Решение: Убедитесь, что вы:
- Правильно настроили redirect URI в настройках вашего OAuth client ID
- Добавили правильный client ID и секрет в настройки Django
- Установили и правильно настроили django-allauth
Проблема: Верификация занимает слишком много времени
Решение: Верификация в Google может занять до 7 рабочих дней. Если прошло больше времени:
- Проверьте почту на запросы дополнительной информации
- Убедитесь, что все обязательные поля экрана согласия OAuth заполнены
- Обратитесь в поддержку Google, если задержка превышает 10 рабочих дней
Проблема: Области доступа (scopes) не работают после верификации
Решение: После верификации некоторые области доступа все еще могут требовать дополнительного одобрения:
- Изучите конкретные требования к областям доступа в документации Google
- Убедитесь, что вы запросили все необходимые области доступа при настройке экрана согласия OAuth
- Будьте готовы предоставить дополнительное обоснование для чувствительных разрешений
Альтернативные решения
Если вам необходимо аутентифицировать нескольких пользователей во время разработки или вы предпочитаете не ждать верификации, рассмотрите эти альтернативы:
1. Используйте Google Workspace (ранее G Suite)
Если ваша организация использует Google Workspace:
- Настройте ваше приложение как внутренний OAuth-клиент
- Это обходит некоторые требования верификации для пользователей внутри вашей организации
- Обратитесь к администратору Google Workspace вашей организации за помощью
2. Реализуйте локальную аутентификацию для разработки
Для целей разработки:
- Создайте локальную систему аутентификации вместе с Google OAuth
- Используйте функции социальных учетных записей django-allauth, но с fallback на локальную аутентификацию
- Это позволяет тестировать другую функциональность приложения, пока ожидается верификация Google OAuth
3. Используйте другие OAuth-провайдеры
В качестве временного обходного решения:
- Реализуйте OAuth с другими провайдерами (GitHub, Facebook и т.д.)
- Эти провайдеры могут иметь разные процессы верификации или требования
- Как только ваш Google OAuth будет верифицирован, вы можете удалить другие провайдеры, если это необходимо
Заключение
Проблема, с которой вы сталкиваетесь с аутентификацией Google OAuth в вашем Django-приложении, является стандартной частью процесса безопасности верификации Google. Как владелец проекта, вы обладаете административными привилегиями, но не можете автоматически проходить аутентификацию как тестовый пользователь из-за намеренного разделения между ролями разработки и пользователей в системе OAuth Google.
Для решения этой проблемы:
- Правильно настройте экран согласия OAuth со всей необходимой информацией
- Добавьте альтернативные Google-учетные записи в качестве тестовых пользователей для разработки и тестирования
- Отправьте ваше приложение на верификацию через консоль Google Cloud
- Дождитесь верификации (обычно 3-7 рабочих дней) перед открытием доступа всем пользователям
Помните, что этот процесс верификации в конечном итоге предназначен для защиты как разработчиков, так и пользователей, обеспечивая правильную обработку аутентификации и доступа к данным. Хотя это может показаться неудобным на начальном этапе, это важный шаг в создании безопасного и заслуживающего доверия приложения.