Как да внедрите Gmail IMAP с Omniauth

Прочетох няколко отчаяни източника на информация относно свързването с Gmail на Google чрез XOAUTH: http://code.google.com/apis/gmail/oauth/protocol.html#imap

И се опитвам да използвам скъпоценния камък „gmail“, който прилага IMAP: https://github.com/nu7hatch/gmail

И накрая, ominauth за обработка на удостоверяването: https://github.com/Yesware/omniauth-google

Как всъщност да свържа тези кодове заедно, за да направя нещо използваемо? Моля, уведомете ме за внедрявания в реалния свят, ето няколко примера за свързване с Gmail: http://otherinbox.com http://goslice.com


person hagope    schedule 31.01.2012    source източник
comment
Имам същия проблем, борих се да направя това да работи, но не можах   -  person Shakes    schedule 02.05.2012


Отговори (1)


Имах проблеми, като вас, с използването на съществуващи скъпоценни камъни, тъй като XOAUTH на Google вече е остарял. Трябва да използвате техния нов XOAUTH2.

Ето работещ пример за извличане на имейли от Google чрез техния протокол XOAUTH2. Този пример използва mail, gmail_xoauth, omniauth и omniauth-google-oauth2 скъпоценни камъни.

Също така ще трябва да регистрирате приложението си в конзолата за API на Google, за да получите вашите 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

# 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
person Andrew    schedule 24.10.2012
comment
Това беше наистина полезно благодаря. Използвах gmail gem и превключването към gmail_xoauth изглежда отстрани проблема. Благодаря. - person stef; 11.06.2013
comment
Не мисля, че това решение вече работи. Продължавам да получавам: Net::IMAP::NoResponseError: Невалидни идентификационни данни (Грешка) - person Richardsondx; 09.08.2015