来自服务器的Ruby POST调用失败
我正在尝试用ruby制作一个spotify web管理器,以实现我遵循的目标 我的后端看起来类似于spotify的人在这方面所做的示例。你可以在这里看到我的 因此,我得到的错误是400错误的请求或415不支持的媒体类型 起初我使用的是net/http核心库,但可能是因为我做了一些错误的事情,所以我使用的结果是相同的 这是代码不起作用的原因:来自服务器的Ruby POST调用失败,ruby,sinatra,spotify,Ruby,Sinatra,Spotify,我正在尝试用ruby制作一个spotify web管理器,以实现我遵循的目标 我的后端看起来类似于spotify的人在这方面所做的示例。你可以在这里看到我的 因此,我得到的错误是400错误的请求或415不支持的媒体类型 起初我使用的是net/http核心库,但可能是因为我做了一些错误的事情,所以我使用的结果是相同的 这是代码不起作用的原因: request = Typhoeus::Request.new("https://accounts.spotify.com/api/token", me
request = Typhoeus::Request.new("https://accounts.spotify.com/api/token",
method: :post,
body: {
grant_type: "authorization_code",
code: code,
redirect_uri: "http://localhost:5000/auth/spotify/callback"
},
headers: {
"Authorization": "Basic #{Base64.strict_encode64("#{settings.spotify_id}:#{settings.spotify_key}")}"
},
followlocation: true
)
logger.info request.inspect
request.on_complete do |response|
logger.info "[]" * 100
logger.info response
if response.success?
logger.info "SUCCESS"
elsif response.timed_out?
logger.info "TIMED OUT"
elsif response.code == 0
logger.info response.return_message
else
logger.info "HTTP request failed: #{response.code.to_s}"
redirect '/auth/failure'
end
end
request.run
嗯,如果你们中有人知道发生了什么事,了解它会很有帮助
提前谢谢
编辑
字符串插值工作正常,已在控制台上测试
"Basic #{Base64.strict_encode64("#{settings.spotify_id}:#{settings.spotify_key}")}"
关于重定向uri,必须很好地工作,一件事是因为指南是用localhost示例解释的,第二件事是,上解释的第一个请求工作正常,当我尝试在该指南上执行4个步骤时会出现问题。您确定这种字符串插值有效吗?你有没有查看wireshark的流量,看看它是否工作正常?它看起来可疑,因为您在双引号中使用双引号,但仍然希望它能工作。如果你不想设置wireshark,让你的应用程序在控制台上发布请求文本。此外,您确定Spotify将允许使用localhost重定向uri吗?还有,你什么时候拿到400,什么时候拿到415?这是重要的信息,你不能把它们混为一谈。我已经将Typhous gem更改为HTTParty,现在错误变得越来越明显 这里的主要问题不是400或415错误,而是附加到此错误的消息。这里的错误是:
"error"=>"invalid_grant", "error_description"=>"Invalid authorization code"
所以,我没有意识到这一点是我的错,但我不清楚这一点,有时疲劳和挫折让你看不到显而易见的东西
现在,只需要知道为什么作者。代码无效
无论如何,谢谢你的帮助。当我设置标题选项HTTP Content Type时,它得到了415个错误。当没有内容类型时,只有400个错误代码。