【发布时间】:2011-07-19 11:16:45
【问题描述】:
我正在尝试在 Rails 3 中实现 OAuth 提供程序。当我尝试授权客户端应用程序时,我收到此错误。我正在使用 RESTful auth 插件和 pelles OAuth-plugin。当我通过 Rails 控制台进行测试并收到此错误时,我认为我只需要对 URL 进行编码,但在浏览器中进行测试时遇到了同样的错误,所以我不确定出了什么问题。
【问题讨论】:
标签: ruby-on-rails-3 oauth
我正在尝试在 Rails 3 中实现 OAuth 提供程序。当我尝试授权客户端应用程序时,我收到此错误。我正在使用 RESTful auth 插件和 pelles OAuth-plugin。当我通过 Rails 控制台进行测试并收到此错误时,我认为我只需要对 URL 进行编码,但在浏览器中进行测试时遇到了同样的错误,所以我不确定出了什么问题。
【问题讨论】:
标签: ruby-on-rails-3 oauth
我遇到了URI.split 的麻烦(返回此错误),我不知道这是否对您有帮助,但我会在此处发布一些警告,以提醒其他遇到此错误的人:
URI.encode(url) 在URI.parse 之前(以避免特殊字符)URI.parse 的字符串执行strip(以避免前导和尾随空格)。一体化:
uri = URI.parse(URI.encode(url.strip))
相关资源:http://www.practicalguile.com/2007/09/15/raising-uriinvalidurierror-from-a-perfectly-valid-uri/
【讨论】:
URI.split 接受)。
URI.split 似乎是一个不完整的 rfc3986 解析器,所以最好绕过它并省去一些麻烦。
'https://example.com/[%23R]%20' 即使在URI.encode 之后也会导致异常
您也可以使用此替代 URI gem:https://github.com/sporkmonger/addressable
没有这样的问题。
非常原生,只需在安装 gem 后在代码中添加命名空间
Addressable::URI
【讨论】:
试试这个:
safeurl = URI.encode(url.strip)
response = RestClient.get(safeurl)
【讨论】:
'https://example.com/[%23R]%20' 即使在URI.encode 之后也会导致异常
我来这里是因为我遇到了快车道问题。它是用 Ruby 编写的,因此我的回答可能会有所帮助。
就我而言,我有环境变量http_proxy = XX.XX.XX.XX:XXXX 和https_proxy = ...
当我将它们分别更改为 http_proxy = http://XX.XX.XX.XX:XXXX 和 https_proxy = https://... 时,问题就消失了。
【讨论】: