gpt4 book ai didi

ruby-on-rails - 如何使用 Omniauth 实现 Gmail IMAP

转载 作者:行者123 更新时间:2023-12-04 06:15:59 25 4
gpt4 key购买 nike

我已经阅读了几个关于通过 XOAUTH 连接到 Google 的 Gmail 的绝望信息来源: http://code.google.com/apis/gmail/oauth/protocol.html#imap

我正在尝试使用实现 IMAP 的“gmail”gem: https://github.com/nu7hatch/gmail

最后,省略处理身份验证: https://github.com/Yesware/omniauth-google

我实际上如何将这些代码结合在一起以使某些东西可用?请让我知道任何现实世界的实现,这里有一些连接到 Gmail 的示例: http://otherinbox.com http://goslice.com

最佳答案

自从 Google 的 XOAUTH 现已弃用以来,我和您一样在使用现有 gem 时遇到了麻烦。您应该使用他们的新 XOAUTH2。

这是一个使用 Google 的 XOAUTH2 协议(protocol)从 Google 获取电子邮件的工作示例。此示例使用 mail , gmail_xoauth , omniauth , 和 omniauth-google-oauth2 gem 。

您还需要在 Google's API console 中注册您的应用程序以获取您的 API token 。

# 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

关于ruby-on-rails - 如何使用 Omniauth 实现 Gmail IMAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com