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

Я пытаюсь реализовать Google Sign-In (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"
}

1 Ответ

0 голосов
/ 15 апреля 2019

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

...