Как добавить несколько URI перенаправления для Google OAuth 2?
Я пытаюсь выполнить проверку подлинности Google OAuth 2 с игрушечным приложением, которое я запускаю на своем компьютере (в localhost:8080
), используя Social Auth для Java.
Однако, когда мое приложение подключается к Google для аутентификации пользователя, Google отвечает на эту страницу с ошибкой:
![enter image description here]()
Мое приложение под названием "Приложение для моего хобби" настроено в консоли разработчика как таковое:
![enter image description here]()
В Google OAuth 2 документах указано, что:
redirect_uri: одно из значений redirect_uri, перечисленных для этого проекта в Консоли разработчиков.
Определяет, куда отправляется ответ. значение этого параметра должно точно соответствовать одному из указанных значений для этого проекта в Google Developers Console (включая http или https, case и trailing '/').
У меня есть пара вопросов:
- Как добавить несколько
redirect_uri
в мое приложение?
- Почему Google идентифицирует мое приложение как "Учетная запись службы по умолчанию для проекта", а не "Приложение для моего хобби"?
Ответы
Ответ 1
На самом деле это проще, чем вы думаете, к сожалению, мне потребовалось пару часов, чтобы понять это.
Как добавить несколько redirect_uris в мое приложение?
Обычно, когда вы добавляете несколько ссылок на что-либо в Google или в другом месте, вы разделяете его на ,
или ;
, но с URI Redirect вы должны использовать новую строку, это на самом деле не очень интуитивно. Поэтому, когда вы нажимаете кнопку Edit Settings
, вы можете добавить в URI и/или Origins, если у вас есть еще несколько ссылок, разделенных символами новой строки (enter
).
Нет необходимости в сложных конфигурациях приложений или новых ключах.
![image]()
Почему Google идентифицирует мое приложение как "Учетная запись службы по умолчанию для проекта", а не "Приложение для моего хобби"?
По второму вопросу: вам нужно перейти на вкладку "Согласие экрана", чтобы изменить информацию о вашем приложении, например, PRODUCT NAME
, HOMEPAGE
, LOGO
и т.д.
Ответ 2
Этот ответ может быть не точным ответом на вопрос, но я думаю, что это может помочь тем, кто впервые использует Google OAuth, и задаются вопросом, почему их множественные URI не распознаются.
Мы используем URI перенаправления в 2 местах в коде. Первый раз, когда вы извлекаете код auth и второй раз, при обмене этим кодом на токен доступа.
В Документах Google четко указано, что ответ на запрос кода авторизации (1-й запрос) будет отправлен в URI перенаправления, Итак, если вы сделаете запрос от конечной точки A и укажите rediredt URI в качестве конечной точки B, Google отправит код auth в конечную точку B. Это ясно и отлично работает без каких-либо ошибок.
Следуя второму запросу, документация несколько неоднозначна. Параметр redirect_URI описан ниже:
redirect_uri: URI, указанный вами в API-консоли, как описано в Set URI перенаправления.
Вот где я ошибся в понимании того, как это работает. Следуя аналогичному подходу к первому вызову, я использовал третью конечную точку C и передал эту конечную точку C в параметре redirect_URI во время второго вызова. Я получил ошибку несоответствия URI, хотя мои конечные точки B и C указаны в консоли API.
Проблема заключается в том, что, в отличие от первого вызова, ответ на второй вызов приходит к той же конечной точке, откуда сделан запрос. Я сделал запрос в python, как показано ниже:
r = requests.post(token_endpoint, params)
r
имеет ответ с токеном.
Я получал несоответствие URI, потому что я должен использовать один и тот же redirect_URI в обоих вызовах.
Итак, для одного запроса OAuth нам нужно использовать один redirect_URI.
Но тогда возникает вопрос, почему несколько разрешений redirect_URI разрешены в консоли API для одного приложения. Я предполагаю, что если нам нужно сделать несколько пар вызовов authCode-токенов в одном приложении, у нас есть свобода использования нескольких redirect_URI.