Quiero obtener tokens oauth o xauth de GMail para usar con gmail-oauth. Estoy pensando en usar OmniAuth pero parece que todavía no es compatible con GMail, lo que significa que con stock OmniAuth es imposible. ¿Es eso correcto? ¿Me estoy perdiendo de algo?¿Es posible obtener tokens oauth o xauth de Gmail con OmniAuth?
Respuesta
Omniauth tiene soporte para OAuth y OAuth2, que ambos le permiten autenticar una cuenta de google.
Aquí están todas las estrategias que puede utilizar a través de OmniAuth: https://github.com/intridea/omniauth/wiki/List-of-Strategies
Éstos son los dos google gemas OAuth:
de acuerdo con las documentación de la primera gema:
Añadir el middleware a una aplicación Rails en config/inicializadores/omniauth.rb:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google, CONSUMER_KEY, CONSUMER_SECRET
# plus any other strategies you would like to support
end
Esto se hace además a la creación de la principal omniauth gem.
Tuve problemas, como usted, al usar gemas existentes con OAuth2 y Gmail ya que el protocolo OAuth1 de Google ahora está en desuso y muchas gemas aún no se han actualizado para usar su protocolo OAuth2. Finalmente pude hacerlo funcionar usando Net::IMAP
directamente.
Aquí hay un ejemplo práctico de cómo recuperar el correo electrónico de Google utilizando el protocolo OAuth2. Este ejemplo utiliza las gemas mail
, gmail_xoauth
, omniauth
y omniauth-google-oauth2
.
También deberá registrar su aplicación en Google's API console para obtener sus tokens de API.
# in an initializer:
ENV['GOOGLE_KEY'] = 'yourkey'
ENV['GOOGLE_SECRET'] = 'yoursecret'
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], {
scope: 'https://mail.google.com/,https://www.googleapis.com/auth/userinfo.email'
}
end
# ...after handling login with OmniAuth...
# in your script
email = auth_hash[:info][:email]
access_token = auth_hash[:credentials][:token]
imap = Net::IMAP.new('imap.gmail.com', 993, usessl = true, certs = nil, verify = false)
imap.authenticate('XOAUTH2', email, access_token)
imap.select('INBOX')
imap.search(['ALL']).each do |message_id|
msg = imap.fetch(message_id,'RFC822')[0].attr['RFC822']
mail = Mail.read_from_string msg
puts mail.subject
puts mail.text_part.body.to_s
puts mail.html_part.body.to_s
end
- 1. omniauth oauth tokens para gmail no son válidos
- 2. Rails 3 obtener contactos de gmail usando omniauth?
- 3. ¿Cuál es la diferencia entre BasicAuth, OAuth y XAuth?
- 4. Devise y OmniAuth recordando OAuth
- 5. ¿Mejores prácticas para generar tokens de OAuth?
- 6. Tokens y sesiones de OAuth en RESTO
- 7. Instapaper API y Javascript XAuth
- 8. ¿Los clientes deben obtener tokens de acceso OAuth 2 usando GET o POST?
- 9. xauth usando python-oauth2
- 10. Obteniendo una dirección de gmail con ... openid? ¿oauth?
- 11. omniauth OAuthException y OAuth :: no autorizado
- 12. Implementación de Google OAuth con JQuery, ¿es posible?
- 13. OmniAuth usando google oauth 2 estrategia alcance falla
- 14. Acceso a la alimentación de atom de Gmail usando OAuth
- 15. ¿Es posible proteger las API de WebSocket con OAuth 2.0?
- 16. Obtener los tokens de NSTokenField
- 17. SSO con CAS o OAuth?
- 18. use imaplib y oauth para la conexión con Gmail
- 19. Google oauth a través de legado y OmniAuth/oauth solicitando continuamente acceso
- 20. ¿OAuth no es seguro o no lo entendí?
- 21. Comprender OAuth con Perl
- 22. cambiar mediante programación el estado de Gmail a través de OAuth o AuthSub
- 23. ¿Cómo implementar OAuth PHP para el feed de Gmail Atom?
- 24. Acceda a Imap de Gmail con el token de acceso de OAuth 2.0
- 25. ¿Cómo se comparan los inicios de sesión por segundo con omniauth/oauth? (ruby + rspec)
- 26. ¿Es posible obtener estadísticas con TortoiseSVN?
- 27. Cerrar sesión programáticamente desde Gmail a través de Oauth
- 28. OmniAuth + Extracción de Tweets, FB Places, etc.
- 29. ¿Cómo me conecto al servidor IMAP de Gmail usando oauth en Rails3?
- 30. ¿Hay alguna manera de obtener su dirección de correo electrónico luego de autenticarse con Gmail usando Oauth?
Creo que la pregunta es acerca de cómo obtener el access_token, no solo la autenticación. Este access_token es útil para usar google apis. – robermorales
Ah, lo leí más que a los OP que pensaban que no podían hacer auth con omniauth a través de google, por lo que se preguntaban si necesitaban rodar los suyos. Omniauth tiene extensiones para auth a través de google, pero es un paso por encima de la implementación básica. – jstim