我想从Gmail中获取oauth或xauth标记以与gmail-oauth一起使用。我正在考虑使用OmniAuth,但它似乎不支持GMail,这意味着OmniAuth是不可能的。那是对的吗?我错过了什么吗?是否可以使用OmniAuth获取Gmail oauth或xauth标记?
5
A
回答
2
Omniauth支持OAuth和OAuth2,这两个都允许您验证Google帐户。
这里是所有的策略,你可以通过omniauth使用: https://github.com/intridea/omniauth/wiki/List-of-Strategies
这里有两个谷歌的OAuth宝石:
由于每第一个宝石的文档:
中间件添加到一个Rails应用程序在配置//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
这除了来建立主omniauth gem完成。
1
我有麻烦,像你一样,使用带的OAuth2和Gmail现有的宝石,因为谷歌的协议您好!OAuth1现在已经过时,许多宝石尚未更新使用他们的OAuth2协议。我终于能够直接使用Net::IMAP
来工作。
以下是使用OAuth2协议从Google获取电子邮件的工作示例。本例使用mail
,gmail_xoauth
,omniauth
和omniauth-google-oauth2
宝石。
您还需要在Google's API console注册您的应用程序才能获取您的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. 获取XAuth以使用Node.JS和OAuth
- 2. 是否可以使用OAuth为GMail发送邮件
- 3. 是否可以使用VBA获取Gmail邮件?
- 4. 是否可以使用Gmail API从一段时间间隔获取gmail?
- 5. 如何使用GsonHttpMessageConverter获取oauth标记?
- 6. 使用... openid获取Gmail地址? OAuth的?
- 7. 使用oAuth获取gmail联系人
- 8. Twitter身份验证OAuth或XAuth
- 9. 针对Gmail的omniauth oauth令牌无效
- 10. 是否可以标记块?
- 11. 使用推特登录。 OAuth或Xauth使用linq2twitter
- 12. Devise和OmniAuth记住OAuth
- 13. 是否可以使用Gmail-api获取最近的10封电子邮件?
- 14. Rails 3使用omniauth获取gmail联系人?
- 15. 是否可以使用MEF来获取标记为[Export]的类的System.Type?
- 16. 是否可以使用Facebook API获取洞察指标
- 17. 使用Devise + OmniAuth的GitHub OAuth
- 18. 是否可以使用oauth从Facebook粉丝页面获取视频?
- 19. 使用iPhone上的xAuth和/或Web上的OAuth连接到Twitter?
- 20. 是否可以使用omniauth-facebook rails gem保存多个用户?
- 21. 是否可以使用简单标识符来命名(或标记)FormStack字段?
- 22. 使用Jmeter xpath提取器获取oauth标记
- 23. 使用oauth2获取gmail
- 24. 如何使用ruby omniauth-twitter gem获得oauth token和oauth token secret?
- 25. 是否可以在Mapbox标记中使用Font Awesome图标?
- 26. 可以使用omniauth-google-oauth2从google日历API获取日历信息吗?
- 27. python&smtplib:是否可以使用oauth2通过gmail发送邮件?
- 28. 新的Omniauth 1.0.0是否可以与Devise一起使用?
- 29. 将某些邮件标记为通过gmail API读取(使用Oauth)
- 30. 是否可以拖动从geojson文件获取坐标的标记?
我认为问题是关于获取access_token,而不仅仅是验证。这access_token是有用的使用谷歌apis。 – robermorales 2012-05-25 11:07:42
啊,我看它更多的是OP觉得他们无法通过谷歌做omniauth身份验证,使他们,如果他们需要推出自己想知道。 Omniauth有通过谷歌认证的扩展,但它是基本实现之上的一个步骤。 – jstim 2012-05-25 23:15:41