7
votes

Jouer avec l'API Yahoo Fantasy Sports à IRB

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.

Yahoo Fantasy Sports API: http://developer.yahoo.com/fantasysports/guide/

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.

J'utilise des rails 3.2.2 et Ruby 1.9.2


0 commentaires

3 Réponses :


1
votes

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.

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.


1 commentaires

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?



11
votes

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:

GEM Stuff H2>
  • 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>

    truc de migration h2>
    • 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 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>

    • 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 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>
      • Vous devez définir la touche : 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
        
      • 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 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
        
      • Indiquez à votre modèle utilisateur qu'il a un jeton: p>

        has_one :yahoo, :class_name=>"YahooToken", :dependent=>:destroy
        


3 commentaires

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!



1
votes

Je préfère pelle / oauth-plugin sauvegarder la session_handle dans Actualiser! plutôt puis fourche-le.

Wrapper des consommateurs

Modèle / YahooooNoke.rb Inspiré par @jamesswift.

Migration

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.

profiter.


0 commentaires