我正在使用 Google Omniauth gem here,需要提供它的两个实例,以便我可以让他们请求一组不同的权限。我使用这个 guide 与等效的 Facebook gem 一起工作。做同样的事情不适用于 Google gem。有谁知道我能做些什么来实现这一点?
晚了几年,但现在这是正确的方法:
Rails.application.config.middleware.use OmniAuth::Builder do
provider OmniAuth::Strategies::GoogleIntegration,
ENV["GOOGLE_CLIENT_ID"],
ENV["GOOGLE_CLIENT_SECRET"],
name: 'google_integration' # <=== Use the name option.
end
好吧,我明白了。由于某种原因,Google Oauth2 gem 不使用提供程序名称作为符号,但会采用类名称。所以我可以用这个来解决这个问题:
# initializers/omniauth.rb
module OmniAuth::Strategies
class GoogleIntegration < GoogleOauth2
end
end
Rails.application.config.middleware.use OmniAuth::Builder do
provider OmniAuth::Strategies::GoogleIntegration, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"],
{
...
}
end
我认为与 CaioEPS 相比,它不会按预期在所有地方工作,除非你这样做:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_integration,
ENV["GOOGLE_CLIENT_ID"],
ENV["GOOGLE_CLIENT_SECRET"],
name: :google_integration,
strategy_class: OmniAuth::Strategies::GoogleIntegration
end
至少如果你使用 Devise