В нашем приложении мы позволяем пользователю получать доступ к своим данным у различных поставщиков (Календарь Google, Microsoft Outlook, временная шкала Facebook и т. Д. c.) Через доступные API, используя Omniauth. Для этого у нас есть omniauth.rb
со всеми необходимыми конфигами, такими как:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], scope: 'email,user_posts,user_status,public_profile,manage_pages,instagram_basic'
provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'],
name: 'google',
scope: 'email, profile, calendar.readonly',
access_type: 'offline',
prompt: 'select_account consent'
# etc...
end
Теперь мы хотели бы добавить логин с Google в качестве альтернативного способа входа в систему. Так как мы используем Devise для управления пользовательскими сессиями Мы хотели бы использовать возможности Omniauth Devise для реализации входа в систему с поставщиком OAuth, таким как Google. Однако, как только мы сделаем нашу модель «омниатируемой», существующая функциональность Omniauth перестает работать, выдавая No route matches [GET] "/auth/facebook"
при попытке добавить учетную запись oauth для доступа к API.
Как правильно сочетать использование Omniauth в Devise и в нашем простом ванильном потоке OAuth?