Поток учетных данных клиента - получение токена доступа - PullRequest
0 голосов
/ 24 июня 2018

Как я могу получить access_token через Поток учетных данных клиента для Spotify, используя Alamofire ?

Вот мой код:

// Spotify API
func callAlamo(url: String) {
    let parameters = ["client_id" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                      "client_secret" : "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
                      "grant_type" : "client_credentials"]

    let headers = ["Authorization" : "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"] // <- xxx is the client_id

    Alamofire.request("https://accounts.spotify.com/api/token", method: .post, parameters: parameters, headers: headers).responseJSON(completionHandler: {
        response in
        print(response.result)
        print(response.result.value)
    })
}

Вот раздел моего журнала печати:

УДАЧИ

Дополнительно ({ error = "invalid_client"; })

enter image description here

Что не так с этим кодом? Я отправляю неправильные параметры или заголовки? Я что-то забыл?

Примечание: client_id и client_secret верны

- Если что-то неясно, напишите мне -

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Ну, я не знаю, как это работает. Теоретически, правильное исполнение: - Сделайте POST-запрос к URL: https://accounts.spotify.com/api/token

  • установить в качестве заголовков:

    "Content-Type": "application / x-www-form-urlencoded"

    «Авторизация»: «Basic xxxxx»

Где xxxxx - это кодированная base64 строка client_id: client_secret (поэтому строка client_id и client_secret разделены:)

  • устанавливается как тело: "grant_type": "client_credentials"

Это даст вам правильный ответ

например.

{
    "access_token": "BQCJeyp3ocQZzSksvNn3IXuvY0NsYI26YMF400jp-7Dd8zGz6ecXyywwmSdy4jrPWwLZA_6l4e59lu8dYfg",
    "token_type": "Bearer",
    "expires_in": 3600,
    "scope": ""
}
0 голосов
/ 24 июня 2018

После нескольких дней и 2 вопросов, я понял это сам.Это было чрезвычайно простое исправление, которое разочаровывает.

Все, что я сделал, это удалил параметр headers в запросе.

Другой вариант заключается в том, что вы можете установить headers в * 1007.*.

Alamofire.request("https://accounts.spotify.com/api/token", method: .post, parameters: parameters).responseJSON(completionHandler: {
    response in
    print(response.result)
    print(response.result.value)
})
...