Chcę uzyskać tokeny Oautha lub Xautha z Gmaila do użycia z gmail-oauth. Myślę o użyciu OmniAuth, ale wygląda na to, że nie obsługuje jeszcze Gmaila, co oznacza, że przy braku czasu OmniAuth jest niemożliwe. Czy to jest poprawne? Czy czegoś brakuje?Czy w OmniAuth można uzyskać tokeny Gmaila lub Xautha?
Odpowiedz
Omniauth obsługuje zarówno OAuth i OAuth2, które będą zarówno pozwalają na uwierzytelnienie konta google.
Oto wszystkie strategie można korzystać poprzez omniauth: https://github.com/intridea/omniauth/wiki/List-of-Strategies
Oto dwa google OAuth perełki:
jak na dokumentacja pierwszego klejnotu:
Dodaj middleware do aplikacji Rails w config/inicjalizatory/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
Odbywa się to oprócz do konfigurowania główną omniauth gem.
Miałem problemy, tak jak i ty, używając istniejących klejnotów z OAuth2 i Gmailem, ponieważ protokół OAuth1 Google jest teraz przestarzały, a wiele klejnotów nie zostało jeszcze zaktualizowanych, aby używać ich protokołu OAuth2. W końcu udało mi się go uruchomić bezpośrednio za pomocą Net::IMAP
.
Oto działający przykład pobierania wiadomości e-mail od Google przy użyciu protokołu OAuth2. W tym przykładzie użyto klejnotów o następujących właściwościach: mail
, .
Będziesz musiał również zarejestrować swoją aplikację w Google's API console, aby otrzymać tokeny interfejsu 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. Jak uzyskać dostęp do kontaktów użytkownika Gmaila?
- 2. Jak uzyskać dostęp OAuth do Gmaila?
- 3. Devise/omniauth - Akcja „facebook” nie można znaleźć
- 4. Wtyczka Jenkins Email-ext - tokeny
- 5. Które tokeny można sparametryzować w instrukcjach przygotowanych przez PDO?
- 6. Unieważnij wszystkie tokeny gcm
- 7. Czy Azure TableQuery wewnętrznie obsługuje tokeny kontynuacji?
- 8. Czy można uzyskać listę dodanych lub usuniętych plików z Subversion?
- 9. Czy można rozszerzyć tokeny Facebooka za pomocą extendAccessTokenIfNeeded w aplikacji na Androida?
- 10. Praca (omniauth-facebook) i (omniauth-twitter)
- 11. Czy można uzyskać następny element w Selenium
- 12. Tokeny identyfikatorów weryfikacyjnych Firebase
- 13. Widok listy w stylu Gmaila
- 14. Poprawne tokeny preprocesora w makro konkatenacji
- 15. Powiadomienia push Gmaila w Railsach
- 16. elasticsearch - Powrót tokeny pola
- 17. Hashe lub tokeny na pliki cookie "remember me"?
- 18. Czy potrzebne są oba tokeny csrf i captcha?
- 19. zrozumienie wartości zwracanej w czasie gmaila
- 20. Czy można uzyskać liczbę odwołań do obiektu?
- 21. Bezpiecznie przechowuj tokeny Oautha w pliku
- 22. OmniAuth before_filter wymagający logowania
- 23. Żądania OAuth i Tokeny dostępowe
- 24. Devise (lub OmniAuth) dodawanie "#_" do adresu URL po zalogowaniu
- 25. GUI do zarządzania filtrami Gmaila?
- 26. Czy można ustawić AM/PM w kalendarzu gregoriańskim? Czy jest to coś, co można uzyskać tylko
- 27. OmniAuth + Tożsamość Zapomniałem hasła
- 28. Czy można uzyskać nazwę Enum bez tworzenia String() w Golang
- 29. Czy mogę uzyskać link URL do wersji roboczej Gmaila za pomocą interfejsu Gmail API?
- 30. Rails 3.2 + Devise 2.1 + OmniAuth + uwierzytelnianie Backbone.js
Wydaje mi się, że pytanie dotyczy uzyskania hasła access_token, a nie tylko uwierzytelniania. Ten access_token jest przydatny do używania google apis. – robermorales
Ah, czytałem to bardziej, że OP czuł, że nie mogą zrobić auth z omniauth za pośrednictwem google, więc zastanawiają się, czy muszą wykonać własne. Omniauth ma rozszerzenia auth przez google, ale jest to krok powyżej podstawowej implementacji. – jstim