2011-12-16 10 views
13

Estoy trabajando en obtener datos de calendario de google usando OmniAuth y google-oauth-2 estrategia.OmniAuth usando google oauth 2 estrategia alcance falla

Si pongo nada en el campo de alcance que funciona bien y me da la información por defecto sin el mensaje de autenticación/fracaso y que se puede utilizar la aplicación con normalidad.

Sin embargo el momento añado un ámbito, como en el ejemplo siguiente, me sale un "auth/fracaso? Message = invalid_credentials".

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], { :scope => 'https://www.google.com/calendar/feeds/' } 
end 

¿Hay algo que me falta o algo que debería cambiar?

+0

Omniauth es solo para autenticación. ¿Cómo se obtienen los datos del calendario después de obtener los tokens de autenticación? – Sharj

Respuesta

23

Un breve correo electrónico del autor estrategia de Google-oauth-2 señaló lo siguiente:

Si usted no incluye los ámbitos de perfil, le falla la autenticación.

Al agregar userinfo.email y userinfo.profile (junto con el alcance del calendario) a la lista de :scope separada por comas, pude solucionar el problema.

Ejemplo:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], 
      { :scope => 'userinfo.email, userinfo.profile, https://www.googleapis.com/auth/calendar' } 
end 
+0

Impar, sigo recibiendo este error: 'Algunos ámbitos solicitados no eran válidos. {= Válidos [https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/userinfo.email], no válido = [https://www.googleapis.com/auth/ ]} '¿Te topaste con eso? –

+0

¿Puedes pegar tu campo: alcance? – y4ku

+0

Igual que su alcance. –

11

divertido, esto no funcionó para mí. Pude hacer que funcionara, quitando la coma del alcance:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], 
    { :scope => 'https://www.googleapis.com/auth/docs https://www.googleapis.com/auth/userinfo.profile' } 
end 
+0

Esto es lo que funcionó para mí también. Elimina las comas y usa las URL completas. Gracias. – rmw

Cuestiones relacionadas