Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 OAUTH Gem从Yahoo API获取访问令牌_Ruby_Api_Oauth_Yahoo Api - Fatal编程技术网

无法使用Ruby OAUTH Gem从Yahoo API获取访问令牌

无法使用Ruby OAUTH Gem从Yahoo API获取访问令牌,ruby,api,oauth,yahoo-api,Ruby,Api,Oauth,Yahoo Api,几周来,我一直在努力从雅虎那里获得梦幻足球联赛的名单。为了从OAUTH获得我的访问令牌,我写了以下代码 步骤1我之前已经输入了consumer key和consumer secret作为变量,consumer.new语句中也有3个URL,但堆栈溢出不允许我在帖子中包含超过1个URL @consumer = OAuth::Consumer.new(consumer_key, consumer_secret":request_token_path => URL ,:access_token_p

几周来,我一直在努力从雅虎那里获得梦幻足球联赛的名单。为了从OAUTH获得我的访问令牌,我写了以下代码

步骤1我之前已经输入了consumer key和consumer secret作为变量,consumer.new语句中也有3个URL,但堆栈溢出不允许我在帖子中包含超过1个URL

@consumer = OAuth::Consumer.new(consumer_key, consumer_secret":request_token_path => URL ,:access_token_path  =>URL, :authorize_path =>URL)
步骤2

@request_token = @consumer.get_request_token()
第三步这成功地给了我一个网址,我可以给我的雅虎幻想足球帐户的权限,然后它显示给用户一个代码。我将此代码作为我的誓言验证字符串,并在下面通过它

@request_token.authorize_url
sleep(30)

@token = OAuth::Token.new("ucjuyt",@request_token)

@access_token=OAuth::AccessToken.new(@consumer, token=@token, secret=@request_token.secret)

p @access_token.get("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20fantasysports.draftresults&diagnostics=true")
这将返回以下错误

#<Net::HTTPBadRequest 400 Bad Request readbody=true>
我确信这与我如何请求我的访问令牌有关,但我不知道如何让它工作。我没有UI,正在尝试在Ruby代码中运行所有这些,可以吗?我已经浏览了Yahoos文档,但它对我没有任何帮助。

试试这个:

consumer_key= <your consumer key>
consumer_secret = <your consumer secret>
code = <the user code you got after you gave permission>
uri = URI('https://api.login.yahoo.com/oauth2/get_token')
req = Net::HTTP::Post.new(uri.path)

req.basic_auth consumer_key, consumer_secret

req.set_form_data({client_id: consumer_key, client_secret: consumer_secret, redirect_uri: 'oob', code: code, grant_type: 'authorization_code'})

sock = Net::HTTP.new(uri.host, uri.port)
sock.use_ssl = true
res = sock.start {|http| http.request(req) }
puts res.body
access_token = JSON.parse(res.body)['access_token']
refresh_token = JSON.parse(res.body)['refresh_token']

你找到解决办法了吗?我面临着几乎相同的问题