Вход в Google для серверных приложений: замена действительного кода авторизации на токен — ошибка неверного запроса (ошибка: redirect_uri_mismatch)

Я пытаюсь реализовать вход через Google (https://developers.google.com/identity/sign-in/web/server-side-flow) для своего приложения. Мне удалось успешно получить код авторизации, но когда я пытаюсь обменять его на токен, я получаю следующий ответ.

Ответ об ошибке:

{
    "error": "redirect_uri_mismatch",
    "error_description": "Bad Request"
}

Я уже пытался добавить несколько URL-адресов перенаправления в консоль Google, но эта проблема все еще сохраняется. См. URL-адреса перенаправления ниже.

http://localhost:49188/oauthcallback.aspx
https://localhost:49188/oauthcallback.aspx
https://localhost:49188/oauthcallback.aspx
http://localhost/oauthcallback.aspx
https://localhost/oauthcallback.aspx
http://localhost/oauthcallback.aspx
https://localhost/oauthcallback.aspx

Я пробовал несколько запросов с использованием разных конечных точек токена, но это не решает эту проблему.

1-я конечная точка:

POST URI: www.googleapis.com/oauth2/v4/token 
Content-Type: application/x-www-form-urlencoded

code = {code}&
client_id = {xxx}.apps.googleusercontent.com&
client_secret = {client_secret}&
redirect_uri=https://localhost:49188/oauthcallback.aspx&
grant_type=authorization_code

2-я конечная точка:

POST URI: https://oauth2.googleapis.com/token
Content-Type: application/x-www-form-urlencoded

code = {code}&
client_id = {xxx}.apps.googleusercontent.com&
client_secret = {client_secret}&
redirect_uri=https://localhost:49188/oauthcallback.aspx&
grant_type=authorization_code

Я ожидаю получить правильный ответ токена, но ссылаюсь на JSON ниже, так как это ответ, который я получаю.

Ожидаемый ответ:

{
  "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
  "refresh_token":"1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

Ответ об ошибке

{
    "error": "redirect_uri_mismatch",
    "error_description": "Bad Request"
}

На какой URL-адрес авторизации вы отправляете пользователей, чтобы получить этот код авторизации? Полный запрос на авторизацию пользователя должен содержать redirect_uri, который должен совпадать с тем, который вы представляете при вызове обмена токенами.

user2705223 09.04.2019 19:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
199
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

@user2705223 user2705223 Вы подчеркнули хороший момент. Итак, если вы используете ux_mode="popup" или default, кажется, что JS SDK добавляет хост домена в качестве URL-адреса перенаправления по умолчанию вместо URL-адреса, указанного при инициализации, что довольно странно.

Другие вопросы по теме