Конечная точка Google OAuth2 всегда сообщает неверный идентификатор клиента - PullRequest
0 голосов
/ 03 июля 2019

При отправке запросов в Google OAuth2 API в соответствии с их документацией / руководством я продолжаю получать 401 Unauthorized ответов от https://accounts.google.com/oauth2/v4/token, хотя клянусь, что я даю все необходимые поля:

POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
User-Agent: curl/7.47.0
Accept: */*
Content-Length: 311
Content-Type: application/x-www-form-urlencoded

client_id=REDACTED
&client_secret=REDACTED
&code=REDACTED
&grant_type=authorization_code
&redirect_uri=https%3A%2F%2Flocalhost%2Fsso%3Fredirect%3D%252F

Ответ:

HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
Vary: X-Origin
Vary: Referer
Date: Wed, 03 Jul 2019 16:14:15 GMT
Server: scaffolding on HTTPServer2
Cache-Control: private
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Alt-Svc: quic=":443"; ma=2592000; v="46,43,39"
Accept-Ranges: none
Vary: Origin,Accept-Encoding
Transfer-Encoding: chunked

{
  "error": "invalid_client",
  "error_description": "Unauthorized"
}

Я проверил и трижды проверил мой client_id, client_secret, авторизованные хосты и redirect_uri, и просмотрел похожие проблемы с переполнением стека, но ничегокажется, работает ... почему это происходит со мной: (* ​​1012 *

1 Ответ

0 голосов
/ 03 июля 2019

Это потому, что руководство / документация Google обманывает вас. Это не правильная конечная точка, и вместо того, чтобы сказать это, она выдает вам крайне бесполезное сообщение об ошибке. Надеюсь, они узнают об этом посте / ответе и исправят его. Чтобы узнать действительный URL-адрес , который будет использоваться для получения токена авторизации, вы можете нажать кнопку «Скачать JSON» на странице просмотра ваших учетных данных на console.developers.google.com вместо простого копирования / вставка client_id и client_secret. Тогда вы получите что-то похожее на это:

{
    "web": {
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "client_id": "REDACTED",
        "client_secret": "REDACTED",
        "javascript_origins": [
            "https://localhost"
        ],
        "project_id": "REDACTED",
        "redirect_uris": [
            "https://localhost/sso?redirect=%2F"
        ],
        "token_uri": "https://oauth2.googleapis.com/token"
    }
}

и вот оно у вас. URI токена REAL .

...