客户端凭据流-获取访问令牌

时间:2018-06-24 10:30:12

标签: ios swift alamofire spotify

如何使用Client Credentials Flow通过Alamofire接收Spotify的访问令牌?

到目前为止,这是我的代码:

client_id

这是我的打印日志的一部分:

  

成功

     

可选({       错误=“ invalid_client”;   })

enter image description here

此代码有什么问题?我发送的参数或标题错误吗?我忘了什么吗?

注意: 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 (..) 是正确的

-如果有任何不清楚的地方,请给我发消息-

2 个答案:

答案 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用:分隔)

  • 设置为正文: “ grant_type”:“ client_credentials”

这将给您正确的答案

例如

{
    "access_token": "BQCJeyp3ocQZzSksvNn3IXuvY0NsYI26YMF400jp-7Dd8zGz6ecXyywwmSdy4jrPWwLZA_6l4e59lu8dYfg",
    "token_type": "Bearer",
    "expires_in": 3600,
    "scope": ""
}