首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IRB中使用Yahoo Fantasy Sports API

在IRB中使用Yahoo Fantasy Sports API
EN

Stack Overflow用户
提问于 2012-03-21 06:18:57
回答 3查看 4.3K关注 0票数 7

我想玩一玩雅虎梦幻体育API。我不知道从哪里开始。我需要做什么才能开始在IRB中使用API,并开始调用和检索不同的球员或统计数据?这是我第一次尝试解决没有现成的Ruby gem的API。

雅虎梦幻体育应用编程接口:http://developer.yahoo.com/fantasysports/guide/

我已经按照开发指南中详细介绍的步骤设置了我的开发人员消费者密钥和密钥。不过,我不确定如何处理这些信息。

我使用的是Rails 3.2.2和Ruby 1.9.2

EN

回答 3

Stack Overflow用户

发布于 2012-03-30 12:42:43

在过去的几周里,我花了很多时间试图让一个网站与雅虎的fantasysports API相结合,直到最近才克服了通过OAuth进行身份验证、提出有效请求以及无限期刷新访问令牌的障碍。以下是你需要采取的步骤,以便能够在IRB中乱搞:

宝石类的东西

  • oauth-plugin包含在Gemfile中。这也将安装OAuth/OAuth2 ruby gem作为依赖项。这将处理所需的请求/访问令牌,但不会开箱即用完全兼容。
  • oauth-plugin需要为您的应用程序准备好身份验证系统。我强烈推荐devise,因为它易于使用,而且oauth-plugin只需很少的设置就能正常工作。我发现,如果我先通过devise生成'User‘,然后再用oauth-plugin生成一个消费者,那么将两者连接起来会更容易。如果你遇到问题,有大量的设计指南。

迁移的东西

  • 雅虎版OAuth的一个怪癖是,你需要为用户存储一个“session_handle”,以便在访问令牌在60分钟后过期时刷新它。我刚刚编辑了现有的OauthConsumerToken迁移,使其包含t.string :session_handle。我不确定执行此操作时MYSQL的问题是什么,但我还必须为oauth创建的consumer_tokens索引指定190的限制。所以我的完整的add索引是add_index :consumer_tokens, :token, :unique => true, :length => 190。我还建议在users表中添加一个:guid字符串列,因为这是雅虎使用的唯一插件,可以容纳我们正在跟踪的两个额外的列(会话句柄和guid),你需要覆盖一些oauth - identifier.
  • To的默认行为。如果您只想使用我的版本(https://github.com/JamesSwift/oauth-plugin),我已经对项目进行了分支并进行了必要的更改。我的版本的三个依赖项分别是ConsumerTokens表中的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.
  • Now中自动重定向你有一个令牌,你可以在接下来的一个小时里想用多少就用多少。以下是从控制台使用令牌的示例:

T=xml resp = t.client.get("http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1") put resp.body

  • You也可以将&format=json放在json中,而不是xml

  • 中。60分钟后,您需要获取一个新的访问令牌。我的YahooToken中有一个刷新函数:

定义刷新!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.

  • All可用的幻想体育相关的资源列出了here:(http://developer.yahoo.com/fantasysports/guide/)
票数 11
EN

Stack Overflow用户

发布于 2012-03-21 06:53:05

首先,我建议您熟悉一下OAuth,Yahoo Fantasy Sports API使用它进行身份验证。您还需要知道如何在Ruby中发出HTTP请求。剩下的大部分工作将是阅读API文档和实验。

如果您正在寻找使用OAuth或发出HTTP请求的Ruby库,或者您遇到的任何其他东西,您可能会发现The Ruby Toolbox很有帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-05-25 22:34:26

我更喜欢pelle/oauth-pluginrefresh!中保存session_handle,而不是fork。

消费者包装器

model/YahooToken.rb的灵感来自@JamesSwift。

迁移

我使用omniauth-yahoo进行授权,所以guid保存在授权模型中,您需要在consumer_tokens中添加session_handle(:string)和更改token(:text)列。

好好享受吧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9795882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档