API Spotify - получение действительного токена доступа в скриптах Google Apps - PullRequest
0 голосов
/ 22 мая 2018

Вот документация для API Spotify (я использую неявный поток грантов): https://beta.developer.spotify.com/documentation/general/guides/authorization-guide/#implicit-grant-flow

Я пытаюсь написать скрипт в Google Sheets.Я сосредотачиваюсь на базовой настройке, но не могу заставить работать токен доступа.

РЕШЕНО:

В настоящее время я получаю следующую ошибку (кажется, что мойпараметры для моего метода выборки установлены неправильно):

"ошибка": "unsupported_grant_type", "error_description": "тип_странта должен быть client_credentials, authorization_code или refresh_token"

РЕШЕНИЕ:

Тип grant_type должен быть указан как полезная нагрузка в соответствии с методом сценариев Google UrlFetchApp.fetch (см. Обновленный код ниже)

-

решено:

Как вы можете видеть ниже, я использую метод 'get' при попытке получить токен (несмотря на документацию, указывающую 'post'), потому что метод post последовательно возвращает ошибку 405.Я думаю, что это тот шаг, на котором я облажался.Я предполагаю, что я не должен использовать csrf_token в качестве токена доступа.

РЕШЕНИЕ:

https://accounts.spotify.com/token должно было быть https://accounts.spotify.com/api/token

Обновлен рабочий код ниже:

  var fetchParams = {
    'method':'post',
    'payload':{'grant_type':'client_credentials'},
    'headers':{'Authorization':authorization},
    'muteHttpExceptions':true
  }

  var replaceResponse = UrlFetchApp.fetch('https://accounts.spotify.com/api/token', fetchParams);

  var regExp = /access_token(.*?):/;

  var contentText = replaceResponse.getContentText();
  var access_token = contentText.slice(contentText.search('access_token')+15,contentText.search(',')-1);

  var requestOptions = {
    'headers':{'Authorization':'Bearer '+access_token},
    'muteHttpExceptions':true
  }

  var finalResponse = UrlFetchApp.fetch('https://api.spotify.com/v1/tracks/4dhARBZ8YLvm8oRDnCIeXr', requestOptions);

1 Ответ

0 голосов
/ 24 мая 2018

Я изменил ваш скрипт для получения токена доступа, следуя curl -X "POST" -H "Authorization: Basic ZjM4ZjAw...WY0MzE=" -d grant_type=client_credentials https://accounts.spotify.com/api/token документа.Можете ли вы попробовать этот измененный скрипт?

var authorization = "Basic "+ Utilities.base64Encode('<client_id>:<client_secret>');
var fetchParams = {
  method: 'post', // Modified
  payload: {'grant_type': 'client_credentials'}, // Modified
  headers: {'Authorization': authorization},
  muteHttpExceptions: true
}
var replaceResponse = UrlFetchApp.fetch("https://accounts.spotify.com/api/token", fetchParams); // Modified
Logger.log(replaceResponse.getContentText())

Ссылка:

Если ответное сообщениебыл изменен, пожалуйста, скажите мне.

...