带有Ruby on Rails和OAUTH2的Yahoo API
我有一个从证券交易所获取数据的RoR网站,我通过Yahoo API使用Yahoo的财务表。 我需要授权才能获得对YQL的完全访问权限,这需要我使用Oauth2。 我需要帮助OAuth访问Yahoo。
这是我尝试过的:
client = OAuth2::Client.new(oauth_consumer_key,oauth_consumer_secret, { access_token_path: '/oauth/v2/get_token', authorize_path: '/oauth/v2/request_auth', authorize_url: 'https://api.login.yahoo.com/oauth/v2/request_auth', request_token_path: '/oauth/v2/get_request_token', site: 'https://api.login.yahoo.com' }) puts client.auth_code.authorize_url( redirect_uri: "http://localhost:3000") code = gets.chomp token = client.auth_code.get_token(code, redirect_uri: "http://localhost:3000")
我不知道我必须使用哪个“代码”。 Authorize_url返回给我这个URL ,但不清楚“代码”是什么。 我受到了这个问题的启发。
不要问我为什么,但雅虎很难找到他们的OAuth 2.0文档。 不过我找到了 !
此外,非常“棒极了”,您获得了refresh_token
而无需明确要求用户提供“离线”权限。 在我看来,这是雅虎的安全问题。 Google和Microsoft都需要明确的“离线”访问权限。
require 'oauth2' OAuth2::Client.new(Rails.application.secrets.yahoo_consumer_id, Rails.application.secrets.yahoo_consumer_secret, site: 'https://api.login.yahoo.com', authorize_url: '/oauth2/request_auth', token_url: '/oauth2/get_token') client.auth_code.authorize_url(redirect_uri: redirect_uri, headers: { "Authorization" => basic_authorization }) token = client.auth_code.get_token(code, redirect_uri: redirect_uri) # Later token.refresh!
根据quatermain的要求,我发布我的解决方案作为答案:
https://docs.google.com/document/d/1SdGSfakQM3ZuiqJK7keXhOfh6310-z_h0THl1_Jswxk/pub
P / S:我在文档中做了一些错误,如下所示:
-
句子:“我这个URL不会影响到身份validation过程……” – >应该是“我认为这个URL不会影响身份validation过程……”
-
单词“and ready through” – >应该是“并通读”
- 服务器不会开始使用authlogic-oauth2
- 从youtube登录OAuth保存用户的性别和位置
- 在服务器端validation应用内购买Android / Google
- OAuth2与intridearubygem
- rails3.2 + rspec + capybara1.0测试设计google-oauth2.0
- 这对于sinatra + angular.js +自定义提供程序的Oauth2工作流的概念是否正确?
- 在Rails应用程序中使用Omniauth-oauth2刷新令牌
- Google OAuth 2 redirect_uri_mismatch – OmniAuth Rails应用
- 是否可以只下载没有附件的IMAP邮件?