Ruby on rails 通过在ruby中打开浏览器获得响应?
我使用的是ruby-v2.1.5 我正在尝试使用onedrive API在我的web应用程序中授权我的用户(oAuth2) 我正在遵循中指定的步骤 我通过以下步骤获得了auth_urlRuby on rails 通过在ruby中打开浏览器获得响应?,ruby-on-rails,ruby,oauth-2.0,onedrive,Ruby On Rails,Ruby,Oauth 2.0,Onedrive,我使用的是ruby-v2.1.5 我正在尝试使用onedrive API在我的web应用程序中授权我的用户(oAuth2) 我正在遵循中指定的步骤 我通过以下步骤获得了auth_url require 'rubygems' require 'skydrive' class LivePartnerApp client_id = "MY_CLIENT_ID" client_secret = "MY_CLIENT_SECRET" call_back_url = "http://sample.sa
require 'rubygems'
require 'skydrive'
class LivePartnerApp
client_id = "MY_CLIENT_ID"
client_secret = "MY_CLIENT_SECRET"
call_back_url = "http://sample.samplewebsite.com/"
oauth_client = Skydrive::Oauth::Client.new(client_id, client_secret, call_back_url, "wl.skydrive_update,wl.offline_access")
puts "oauth_client --- #{oauth_client.inspect}"
auth_url = oauth_client.authorize_url
puts "auth_url - #{auth_url.inspect}"
response = system("open", "#{auth_url}")
puts "response #{response.inspect}"
end
当我尝试运行此文件时。我得到了oauth_客户端和auth_url的正确响应
而且
正确打开我的浏览器并重定向到我的重定向url
但我的问题是,
在这个重定向步骤之后,我必须获得一个代码,使用该代码我应该获得一个访问令牌
但是上面的响应变量仅返回真或假,具体取决于重定向的成功与否
有人能建议一种在ruby中以编程方式获取此代码的方法,以便我可以使用它来获取访问令牌吗
提前谢谢 这是因为您使用
system
调用命令行(即shell):system
不返回命令行结果,它只返回true或false。看看
我通常使用反勾号
response = `open #{auth_url}`
我试着使用上面的代码。但是ruby将auth_url作为文件名,并且没有显示这样的文件或目录错误。我认为您的问题可能是您在ruby运行时加载了大量skydive内容,然后使用“system”执行shell命令。系统命令运行的环境只是您的基本命令行环境—它不会包含所有的skydive功能。您不应该使用oauth_客户机对象的某些方法而不是执行系统调用吗?
response = `open #{auth_url}`