Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自服务器的Ruby POST调用失败_Ruby_Sinatra_Spotify - Fatal编程技术网

来自服务器的Ruby POST调用失败

来自服务器的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

我正在尝试用ruby制作一个spotify web管理器,以实现我遵循的目标

我的后端看起来类似于spotify的人在这方面所做的示例。你可以在这里看到我的

因此,我得到的错误是400错误的请求或415不支持的媒体类型

起初我使用的是net/http核心库,但可能是因为我做了一些错误的事情,所以我使用的结果是相同的

这是代码不起作用的原因:

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个错误代码。