我想玩一玩雅虎梦幻体育API。我不知道从哪里开始。我需要做什么才能开始在IRB中使用API,并开始调用和检索不同的球员或统计数据?这是我第一次尝试解决没有现成的Ruby gem的API。
雅虎梦幻体育应用编程接口:http://developer.yahoo.com/fantasysports/guide/
我已经按照开发指南中详细介绍的步骤设置了我的开发人员消费者密钥和密钥。不过,我不确定如何处理这些信息。
我使用的是Rails 3.2.2和Ruby 1.9.2
发布于 2012-03-30 12:42:43
在过去的几周里,我花了很多时间试图让一个网站与雅虎的fantasysports API相结合,直到最近才克服了通过OAuth进行身份验证、提出有效请求以及无限期刷新访问令牌的障碍。以下是你需要采取的步骤,以便能够在IRB中乱搞:
宝石类的东西
迁移的东西
t.string :session_handle。我不确定执行此操作时MYSQL的问题是什么,但我还必须为oauth创建的consumer_tokens索引指定190的限制。所以我的完整的add索引是add_index :consumer_tokens, :token, :unique => true, :length => 190。我还建议在users表中添加一个:guid字符串列,因为这是雅虎使用的唯一插件,可以容纳我们正在跟踪的两个额外的列(会话句柄和guid),你需要覆盖一些oauth - identifier.session_handle列、Users表中的yahoo_guid列,以及将development.rb中的变量CB_URL设置为您在Yahoo注册应用程序时所使用的url。还请记住,如果您使用我的版本的插件,则需要指定路径/github url,这取决于您希望包含它的方式。配置内容
config/intializers/oauth_consumers.rb中设置:key和:secret。我称我的消费者为YahooToken,所以我的消费者是这样的:OAUTH_CREDENTIALS={ :yahoo => { :key => "the key by yahoo“:secret => "the secret by yahoo”}} load token还需要在您创建的自定义令牌类中指定全局yahoo设置。同样,我的代码是一个YahooToken,所以在app/models/yahoo_token.rb中,我的前几行代码是:
class YahooToken < ConsumerToken YAHOO_SETTINGS={ :site=>"http://fantasysports.yahooapis.com/fantasy/v2",:authorize_url =>"https://api.login.yahoo.com/oauth/v2/request_auth",:request_token_url => "https://api.login.yahoo.com/oauth/v2/get_request_token",:access_token_url => "https://api.login.yahoo.com/oauth/v2/get_token",:oauth_version=>"1.0“}
雅虎,:class_name=>"YahooToken",雅虎
实际上在做一些事情,一些事情
http://localhost:3000/oauth_consumers/yahoo获取令牌。雅虎拒绝将你重定向回本地主机,所以你最终会被重定向到CB_URL/parameters-that-yahoo-returns。复制参数字符串并转到http://localhost:3000/oauth_consumers/yahoo/callback/paste-the-string-here。这应该会成功地完成访问令牌的初始检索。不要担心,在本地开发时,每个本地用户只需执行一次此操作。它会在生产environments.T=xml resp = t.client.get("http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1") put resp.body
&format=json放在json中,而不是xml
定义刷新!old_one = self request_token = OAuth::RequestToken.new(YahooToken.consumer,self.token,self.secret) options={} old_one access_token = request_token.get_access_token options new_one = YahooToken.find_or_create_from_access_token self.user,access_token if new_one old_one.delete return new_one end return nil end
t = t.refresh!。我也推荐一个年龄方法对你的令牌,这将有助于创建一个瑞克任务,将刷新令牌每小时为你automatically.
发布于 2012-03-21 06:53:05
首先,我建议您熟悉一下OAuth,Yahoo Fantasy Sports API使用它进行身份验证。您还需要知道如何在Ruby中发出HTTP请求。剩下的大部分工作将是阅读API文档和实验。
如果您正在寻找使用OAuth或发出HTTP请求的Ruby库,或者您遇到的任何其他东西,您可能会发现The Ruby Toolbox很有帮助。
发布于 2012-05-25 22:34:26
我更喜欢pelle/oauth-plugin在refresh!中保存session_handle,而不是fork。
消费者包装器
model/YahooToken.rb的灵感来自@JamesSwift。
迁移
我使用omniauth-yahoo进行授权,所以guid保存在授权模型中,您需要在consumer_tokens中添加session_handle(:string)和更改token(:text)列。
好好享受吧。
https://stackoverflow.com/questions/9795882
复制相似问题