ruby-on-rails – 在IRB中使用Yahoo Fantasy Sports API
我想玩Yahoo Fantasy Sports API.我不知道从哪里开始.为了开始在IRB中使用API??并开始调用和检索不同的玩家或统计数据,我需要做什么?这是我第一次尝试处理没有现成
Ruby gem的API.
Yahoo Fantasy Sports API:http://developer.yahoo.com/fantasysports/guide/ 我按照开发指南中详述的步骤进行操作,并设置了我的开发人员用户密钥和密钥.不知道如何处理这些信息. 我正在使用Rails 3.2.2和Ruby 1.9.2 解决方法
在过去的几周里,我花了很多时间试图让一个网站与雅虎幻想体验API相结合,并且最近才克服了通过OAuth进行身份验证,发出有效请求以及无限期刷新访问令牌的障碍.以下是您需要采取的步骤,以便能够在IRB中乱七八糟:
宝石的东西 >在您的Gemfile中包含oauth-plugin.这也将安装OAuth / OAuth2 ruby?? gems作为依赖项.这将处理所需的请求/访问令牌,但不会完全兼容. 迁移的东西 >雅虎OAuth版本的一个怪癖是,您需要为用户存储“session_handle”,以便在60分钟后过期时刷新访问令牌.我刚刚编辑了现有的OauthConsumerToken迁移,包括t.string:session_handle.当我这样做时,我不确定MYSQL的问题是什么,但我还必须为oauth创建的consumer_tokens索引指定限制为190.所以我的完整添加索引是add_index:consumer_tokens,:token,:unique => true,:length => 190.我建议还在users表中添加一个:guid字符串列,因为这是Yahoo用作唯一标识符的内容. 配置的东西 >您需要在config / intializers / oauth_consumers.rb中设置:key和:secret.我将我的消费者称为YahooToken,因此我看起来像这样: OAUTH_CREDENTIALS={ :yahoo => { :key => "the key given to me by yahoo" :secret => "the secret given to me by yahoo" } } load 'oauth/models/consumers/service_loader.rb' >您还需要在您创建的自定义标记类中指定全局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" } >告诉您的用户模型它有一个令牌: has_one :yahoo,:class_name=>"YahooToken",:dependent=>:destroy 其实做东西,东西 >现在您可以加载服??务器,创建用户,然后转到http:// localhost:3000 / oauth_consumers / yahoo来获取令牌.雅虎拒绝将您重定向回localhost,因此您最终会被重定向到CB_URL / parameters-that-yahoo-returns.复制参数字符串并转到http:// localhost:3000 / oauth_consumers / yahoo / callback / paste-the-string-here.这应该成功完成访问令牌的初始检索.不用担心,在本地开发时,每个本地用户只需执行一次此操作.它会在生产环境中自动重定向. t = User.first.yahoo resp = t.client.get("http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1") puts resp.body >你也可以把& format = json放在最后,用json代替xml def refresh! old_one = self request_token = OAuth::RequestToken.new(YahooToken.consumer,self.token,self.secret) options={} options[:oauth_session_handle]=self.session_handle 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!.我还建议在你的令牌上使用age方法,这将有助于创建一个rake任务,它会自动为你每小时刷新一次令牌. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |