Spotify oauth在尝试获取access_token时返回400

问题描述 投票:0回答:1

我正在尝试从spotify api获取一个access_token。 spotify docs

但是我总是得到响应400,{"error"=>"invalid_grant", "error_description"=>"Invalid authorization code"}

我正在运行的代码原来是,authorization_code是来自控制器的,它是params[:code]中返回的内容>

    response = HTTParty.post(
      'https://accounts.spotify.com/api/token',
      body: {
         grant_type: 'authorization_code',
         code: authorization_code,
         redirect_uri: redirect_uri
        }
      ),
      headers: {
        'Authorization' => 'Basic ' + Base64.strict_encode64("#{client_id}:#{client_secret}"),
      }
    )

我读过有关表单编码的文章,所以我尝试过

    response = HTTParty.post(
      'https://accounts.spotify.com/api/token',
      body: URI.encode_www_form(
        {
         grant_type: 'authorization_code',
         code: authorization_code,
         redirect_uri: redirect_uri
        }
      ),
      headers: {
        'Authorization' => 'Basic ' + Base64.strict_encode64("#{client_id}:#{client_secret}"),
        'Content-Type' => 'application/x-www-form-urlencoded'
      }
    )

但是这一直没有用...我尝试了我认为的每一种组合,但无法使其正常工作。

[redirect_uri绝对正确,因为当我更改它时,它提供了bad_uri方法,并且授权可以正常工作,因为我可以使用Implicit Grant查询api

如果有人有任何经验/解决方案,我将非常有义务

我正在尝试从spotify api获取一个access_token。 spotify docs但是我总是得到响应400,{“ error” =>“ invalid_grant”,“ error_description” =>“无效的授权代码”} ...

ruby-on-rails ruby oauth oauth-2.0 spotify
1个回答
0
投票

我认为您不需要自己对主体进行编码。设置标题应该足够了。您可能必须对redirect_uri进行URL编码,因为它必须与第一个/授权码请求中使用的值匹配。

© www.soinside.com 2019 - 2024. All rights reserved.