如何使用Client Credentials Flow通过Alamofire接收Spotify的访问令牌?
到目前为止,这是我的代码:
client_id
这是我的打印日志的一部分:
成功
可选({ 错误=“ invalid_client”; })
此代码有什么问题?我发送的参数或标题错误吗?我忘了什么吗?
注意: client_secret
和<head>
<title></title>
(..)
<style data-vue-ssr-id="90433b46:0 8b4ab2e8:0 2c8d02e5:0 396e4108:0 01194ca0:0 203df954:0 0323c590:0 5ebbc628:0 7e87bec3:0">/*!
--
| * Bootstrap v4.1.1 (https://getbootstrap.com/)
| * Copyright 2011-2018 The Bootstrap Authors
| * Copyright 2011-2018 Twitter, Inc.
| * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
| */*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent
(..)
是正确的
-如果有任何不清楚的地方,请给我发消息-
答案 0 :(得分:1)
经过几天和两个问题之后,我自己弄清楚了。这是一个非常简单的修复程序,令人沮丧。
我要做的就是删除请求中的headers
参数。
另一种选择是您可以将headers
设置为nil
。
Alamofire.request("https://accounts.spotify.com/api/token", method: .post, parameters: parameters).responseJSON(completionHandler: {
response in
print(response.result)
print(response.result.value)
})
答案 1 :(得分:0)
好吧,我不知道这是如何工作的。 理论上,正确的执行是: -发出POST请求以发送网址: https://accounts.spotify.com/api/token
设置为标题:
“内容类型”:“ application / x-www-form-urlencoded”
“授权”:“基本xxxxx”
其中xxxxx是client_id:client_secret的base64编码的字符串(因此client_id字符串和client_secret用:分隔)
这将给您正确的答案
例如
{
"access_token": "BQCJeyp3ocQZzSksvNn3IXuvY0NsYI26YMF400jp-7Dd8zGz6ecXyywwmSdy4jrPWwLZA_6l4e59lu8dYfg",
"token_type": "Bearer",
"expires_in": 3600,
"scope": ""
}