2010-12-01 24 views
6

Estoy usando el dispositivo para iniciar sesión con omniauth, authid. Cuando el usuario se registra en el reciboCómo acceder a Contactos de Google usando OpenID en 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 

he encontrado un plug-in: http://stakeventures.com/articles/2009/10/06/portable-contacts-in-ruby para obtener los contactos de Google. Solo necesito usar este método:

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

pero necesito un token. Solo tengo el uid. ¿Tiene una idea de cómo obtener el token de acceso? No hay ningún documento sobre el acceso a google.

+0

¿Duplicado de pregunta? [Cómo acceder a Contactos de Google usando OpenID en Ruby] (http://stackoverflow.com/q/4337259/128421) –

+0

No es todo un duplicado; en el caso general, Signet es la mejor opción para OAuth, pero en este caso específico podría no ser debido al soporte de Contactos portátiles. –

Respuesta

3

La respuesta a esto es bastante complicada. El analizador de contactos portátiles de Pelle confía en su gema oauth. Es posible que pueda construir manualmente el token object (un par clave/secreto) de lo que omniauth/authid le dé, pero es probable que sea un código bastante complicado.

El cliente oficialmente compatible OAuth para Ruby es Signet. Sin embargo, el analizador de Pelle solo fue diseñado para ser utilizado con su implementación de OAuth, así que, de nuevo, la historia aquí es más o menos la misma. Podrías arrancar el código de análisis de su cliente y casarlo con Signet, pero como antes, si sigues esa ruta, tienes tu trabajo hecho para ti.

Probablemente la cosa más fácil de hacer hoy en día es simplemente usar la gema oauth y aceptar el árbol de dependencias que Pelle forzó sobre usted.

Editar: Es un poco más tarde y la gema google-api-client puede proporcionarle lo que necesita en este momento. Admite OAuth 1 y 2 y ofrece acceso basado en descubrimiento al certain Google APIs en muchos casos. Lamentablemente, la API de contactos no se encuentra actualmente en el list, pero el cliente aún puede realizar solicitudes a las API sin utilizar el descubrimiento, aunque es un poco más manual en ese caso (en el que debe pasar las solicitudes HTTP que autorizará y usted es básicamente solo para el análisis).

Cuestiones relacionadas