带有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” – >应该是“并通读”