Je veux jouer avec l'API Yahoo Fantasy Sports. Je ne sais pas où commencer. Que dois-je faire pour commencer à jouer avec l'API en IRB et commencer à appeler et à récupérer différents joueurs ou statistiques? C'est ma première tentative de lutte contre une API qui n'a pas de gemme rubis facilement disponible. p>
Yahoo Fantasy Sports API: http://developer.yahoo.com/fantasysports/guide/ P >
J'ai suivi les étapes détaillées dans le guide de développement et configurez ma clé de consommation de développeur et la clé secrète. Je ne sais pas quoi faire avec ces informations. p>
J'utilise des rails 3.2.2 et Ruby 1.9.2 P>
3 Réponses :
Pour commencer, je vous suggérerais de vous familiariser avec OAuth, que l'API sportif Yahoo Fantasy utilise pour l'authentification. Vous devrez également savoir comment faire des demandes HTTP à Ruby. La plupart des autres travaux seront en train de lire la documentation et de l'expérimentation de l'API. P>
Si vous recherchez des bibliothèques de rubis pour utiliser OAuth ou en faisant des demandes HTTP, ou tout ce que vous rencontrez, vous pouvez trouver la boîte à outils Ruby utile. P>
Puis-je utiliser Omniauth à la place de OAuth? Ou doit-il être oauth? Quelle est la différence entre les deux? Ma compréhension est que Omniauth permet à plusieurs clients pendant que OAuth est utilisé lorsque vous n'avez besoin que d'en utiliser un. Est-ce précis? Je pense que je préférerais utiliser Omniauth à cause des rails disponibles. Est-ce que ça va faire?
Je passe de nombreuses heures les deux dernières semaines essayant d'obtenir un site pour lier avec l'API Yahoo FantasysSports et que récemment obtenu l'obstacle de pouvoir être authentifié via OAuth, de faire des demandes valides et de rafraîchir l'accès. jetons indéfiniment. Voici les étapes que vous devez prendre pour pouvoir vous déplacer dans IRB:
Inclure oauth-plugin dans votre gemfile. Cela installera également les gemmes de rubis OAuth / Oauth2 en tant que dépendances. Cela gérera les jetons de demande / d'accès nécessaires, mais ne sera pas entièrement compatible Dès le départ de la boîte. P> Li>
Le plug-in OAuth nécessite un système d'authentification pour être en place pour votre application. Je recommanderais vivement Devise à la fois pour sa facilité d'utilisation et le fait que le plug-in oauth travaille à peu près avec elle avec très peu de configuration. J'ai trouvé plus facile de connecter les deux si je génèverais d'abord un «utilisateur» par le biais de concevoir avant d'avoir généré un consommateur avec le plug-in OAuth. Il y a des tonnes de guides pour concevoir si vous rencontrez des problèmes. P> LI> ul>
Un ennemi de la version Yahoo de OAuth est que vous devez stocker une "session_handle" pour un utilisateur afin d'actualiser le jeton d'accès lorsqu'il expire après 60 minutes. Je viens de modifier la migration oauthconsumernale existante pour inclure Pour accueillir les deux colonnes supplémentaires, nous suivons que OAuth ne connaît pas (la poignée de session et le GUID), vous devez remplacer une partie du comportement par défaut de l'oauth-plugin. J'ai déjà arrêté le projet et j'ai apporté les modifications nécessaires si vous souhaitez simplement utiliser ma version ( https: // github.com/jamesswift/oauth-plugin ). Les trois dépendances de ma version sont une colonne Vous devez définir la touche Vous devez également spécifier les paramètres Yahoo globaux dans la classe de jeton personnalisée que vous avez créée. Encore une fois, le mien est un yahoootank, donc dans Indiquez à votre modèle utilisateur qu'il a un jeton: p>
t.string: session_handle code>. Je ne sais pas ce que le problème était avec MySQL quand je l'ai fait, mais je devais aussi spécifier une limite de 190 pour le
Consumer_Tokens Code> Index que OAuth créé. Donc, mon index a ajouté complet est
add_index: consommateur_tokens ,: jeton,: unique => true,: longueur => 190 code>. Je recommanderais également d'ajouter un
: GUID code> String Colonne sur la table des utilisateurs, car c'est ce que Yahoo utilise comme identifiant unique. P> li>
session_handle code> dans la table CURECTOKENS, une colonne
YAHOO_GUID CODE> dans la table Utilisateurs et définissez la variable
cb_url code> Votre développement.rb Pour être l'URL que vous avez enregistré votre application sous Yahoo. N'oubliez pas non plus que si vous utilisez ma version du plug-in, vous devez spécifier l'URL du chemin / GitHUB en fonction de la manière dont vous souhaitez l'inclure. P> li>
ul>
Configuration Stuff h2>
: clé code> et
: secret code> dans
config / intialisateurs / oauth_consumers.rb code>. J'appelle mon consommateur un yahoootanok, alors le mien ressemble à ceci: p>
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
app / modèles / yahoo_token.rb code> mes premières lignes sont les suivantes: p>
t = User.first.yahoo
resp = t.client.get("http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1")
puts resp.body
has_one :yahoo, :class_name=>"YahooToken", :dependent=>:destroy
Que feriez-vous configurer le fichier des itinéraires pour être / oauth_consumers / yahoo, causez-le maintenant je "m attrouvre une erreur de route.
@ Kamilski81 - Les itinéraires ont dû être générés automatiquement lorsque vous générez un consommateur OAuth à travers le plugin OAuth-Plugin
@Jamesswift Avez-vous un repo github avec un exemple de ce genre de choses? Merci pour la grande réponse de toute façon!
Je préfère pelle / oauth-plugin sauvegarder la session_handle dans Modèle / YahooooNoke.rb Inspiré par @jamesswift. P>
J'autorisez avec Omniauth-Yahoo, donc le GUID Enregistrer dans le modèle d'autorisation et vous devez ajouter Session_handle (: String) et modifier la colonne de jeton (: texte) dans le consommateur_tokens. p>
profiter. p> Actualiser! code> plutôt puis fourche-le. p>
Wrapper des consommateurs h1>
Migration h1>