簡體   English   中英

無法使用Ruby OAUTH Gem從Yahoo API獲取訪問令牌

[英]Cannot get access token from Yahoo API using Ruby OAUTH Gem

我已經嘗試了數周時間,以便能夠從Yahoo獲得幻想足球聯賽的名冊。 我寫了以下內容,以便從OAUTH獲取訪問令牌。

第1步(我之前已經將使用者密鑰和使用者密碼作為變量輸入,我在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()

步驟3(這成功地給了我一個URL,並且我可以授予我的Yahoo Fantasy Football帳戶權限,然后向用戶顯示一個代碼。我將此代碼用作誓言驗證者字符串,並將其傳遞到下面)。

@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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM