Ошибка при попытке получить токен доступа YouTube от пользователя {error: "unsupported_grant_type", error_description: "Invalid grant_type:"} - PullRequest
0 голосов
/ 28 апреля 2020

Я на самом деле использую гем ruby ("yt"), чтобы получить от пользователя разрешение на доступ к его учетной записи YouTube. Пока все хорошо, как указано здесь https://developers.google.com/youtube/v3/guides/auth/server-side-web-apps?hl=es я без проблем перехожу к шагу 3 и получаю код, похожий на 4 / adsfaisdofjaosifjosdifjsdoajifsado (вы понимаете, много случайных символов).

В документации говорится, что мне нужно сделать POST-запрос, подобный следующему, чтобы использовать этот код для получения фактического токена доступа:

POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded

code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFf&
client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com&
client_secret=hDBmMRhz7eJRsM9Z2q1oFBSe&
redirect_uri=http://localhost/oauth2callback&
grant_type=authorization_code

Итак, я делаю. Я пытался сделать это как с помощью curl -d в консоли, так и с помощью fetch с javascript, передавая всю запрашиваемую информацию. Мой код javascript выглядит следующим образом:

 fetch("https://accounts.google.com/o/oauth2/token", {
    method: "POST",
    headers: {
      'Host': 'accounts.google.com',
      "Content-Type": "application/x-www-form-urlencoded"},
    body: {
                "code": '4/2asdasdasdasd',
                "client_id": 'myclientid.apps.googleusercontent.com',
                "client_secret": 'myclientsecret',
                "grant_type": "authorization_code",
                "redirect_uri": 'https://myuri'
              }
  })
  .then((response) => response.json())
  .then((data) => console.log(data))

Я получаю сообщение POST https://accounts.google.com/o/oauth2/token 400, и JSON возвращает следующее:

{error: "unsupported_grant_type", error_description: "Invalid grant_type: "}

Кто-нибудь имеет представление о том, что происходит?

...