2010-12-01 24 views
6

J'utilise un appareil pour me connecter avec omniauth, authid. Lorsque l'utilisateur est connecté je reçoisComment accéder à Google Contacts en utilisant OpenID dans Ruby

user_info: 
name: Riccardo Tacconi 
last_name: Tacconi 
email: [email protected] 
first_name: Riccardo 
uid: https://www.google.com/accounts/o8/id?id=xxxxxxxxx 
provider: google_apps 

J'ai trouvé un plug-in: http://stakeventures.com/articles/2009/10/06/portable-contacts-in-ruby pour obtenir les contacts Google. J'ai seulement besoin d'utiliser cette méthode:

@client = PortableContacts::Client.new "http://www-opensocial.googleusercontent.com/api/people", @access_token 

mais j'ai besoin d'un jeton. Je n'ai que l'uid. Avez-vous une idée de comment obtenir le jeton d'accès? Il n'y a aucun document sur l'accès à google.

+0

Dupliquer de la question? [Comment accéder à Google Contacts utilisant OpenID dans Ruby] (http://stackoverflow.com/q/4337259/128421) –

+0

Pas tout à fait un doublon; Dans le cas général, Signet est le meilleur choix pour OAuth, mais dans ce cas précis, ce n'est peut-être pas dû au support des contacts portables. –

Répondre

3

La réponse à celui-ci est assez compliquée. L'analyseur de contacts portables de Pelle repose sur sa gemme oauth. Vous pourriez être en mesure de construire manuellement le token object (une paire clé/secret) de tout ce que omniauth/authid vous donne, mais il est susceptible d'être un code assez désordonné.

Le client OAuth officiellement pris en charge pour Ruby est Signet. Cependant, l'analyseur de Pelle n'a été conçu que pour son implémentation OAuth, donc encore une fois, l'histoire ici est à peu près la même. Vous pourriez être en mesure de déchirer le code d'analyse de son client et l'épouser à Signet, mais comme avant, si vous suivez cette route, vous avez votre travail à vous couper.

Probablement la chose la plus facile à faire aujourd'hui est d'utiliser simplement la gemme oauth et d'accepter l'arbre de dépendance que Pelle vous a imposé.

Editer: Il est un temps plus tard et la gemme google-api-client peut vous fournir ce dont vous avez besoin à ce stade. Prend en charge OAuth 1 et 2 et offre un accès basé sur la découverte à certain Google APIs dans de nombreux cas. Malheureusement, l'API Contacts n'est pas actuellement sur le list mais le client est toujours capable de faire des requêtes aux API sans utiliser la découverte, bien que ce soit un peu plus manuel dans ce cas (en ce que vous devez passer les requêtes HTTP qu'il autorise et vous êtes fondamentalement seul pour analyser).