Soundcloud API通过Golang 401错误验证

时间:2014-08-08 16:55:55

标签: rest go soundcloud

我尝试连接到Soundcloud API并在Golang中获取令牌,但我得到了一个401错误的说法,"错误":" invalid_client"。

我已验证了客户ID和密码。

我的重定向URI存在且为:

http://localhost:8080/platform/soundcloudCallback.html

我的代码如下:

func main() {
    v := url.Values{}
    v.Set("scope", "non-expiring")
    v.Set("client_id", auth.ClientID)
    v.Set("response_type", "code")
    v.Set("redirect_uri", auth.RedirectURI)

    c.AuthURL = AuthEndpoint + "?" + v.Encode()
    c.Values = v.Encode()

    res := c.Request("POST", url.Values{})
}



func (c *Client) Request(method string, params url.Values) []byte {
    params.Set("client_id", "*************")

    reqUrl := "https://api.soundcloud.com/oauth2/token"

    req, _ := http.NewRequest(method, reqUrl, strings.NewReader(c.Values))
    req.Header.Add("Accept", "application/json")
    resp, _ := c.client.Do(req)

    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)

    return body
}

我的身体在NewRequest中是否不正确或是其他原因造成的问题?目前还不清楚localhost如何与API协同工作。

解决方案是确保您拥有以下所有内容:

v.Set("scope", "non-expiring")
v.Set("client_id", auth.ClientID)
v.Set("client_secret", "f5e416ddf95aed8d077fccccc0a07821")
v.Set("response_type", "code")
v.Set("redirect_uri", auth.RedirectURI)
v.Set("grant_type", "authorization_code")

对于那些坚持这一点的人,我在blog.rileedesign.com上发表了一篇博客文章,详细介绍了所有内容。

3 个答案:

答案 0 :(得分:1)

我认为你还需要设置客户端的秘密,而不仅仅是你的客户端ID。

我还想要一个非过期的访问令牌,但不知怎的,这不起作用。所以每次过期我都会刷新访问令牌。

答案 1 :(得分:1)

我不知道您是否正确进行了身份验证过程。首先,你需要在SoundCloud上设置一个应用程序 - 你已经完成了,因为你有一个客户机密码和一个客户机ID。

然后打开SoundCloud登录页面,输入您的用户名和密码,然后(如果您已成功登录),您将被重定向到具有授权码的重定向URI。该代码非常重要,因为使用该代码可以获得访问令牌。

如果你放入

v.Set("grant_type", "authorization_code")

您还需要使用以下命令设置授权码:

v.Set("code", AUTHORIZATION_CODE)

之后,您将从SoundCloud获得访问令牌,刷新令牌等响应。

编辑:

因此,例如,您的重定向URI看起来像这样

http://redirect.uri

然后,当用户成功通过身份验证后,您将被重定向到包含身份验证代码的URI。它看起来像这样:

http://redirect.uri/?code=AUTHENTICATION_CODE

然后你发出一个POST请求

https://api.soundcloud.com/oauth2/token

包括您的身份验证代码,客户端ID和客户端密钥。响应将包括访问令牌,刷新令牌等。

答案 2 :(得分:1)

也许你想检查一下。

继续实施Soundcloud Oauth2

https://github.com/vitorsvvv/go-soundcloud-oauth