为了验证用户,我在rails中使用omniauth-google-oauth2 gem。现在我想提供额外的google API功能,但我不想强制它,但我想不出一种方法来使特定的范围可选。我尝试在omniauth.rb中添加另一个条目,但它似乎不允许我为同一个提供程序(google_oauth2)添加多个条目。有没有办法在rails应用程序中添加任何可选的作用域?
iyr7buue1#
您可以使用name选项。这应该适用于任何OmniAuth提供程序:
name
Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, 'GOOGLE_CLIENT_ID', 'GOOGLE_CLIENT_SECRET', { :name => 'google' } provider :google_oauth2, 'GOOGLE_CLIENT_ID', 'GOOGLE_CLIENT_SECRET', { :name => 'google_full', :scope => 'original_scope, extra_scope' } end
字符串但是,使用omniauth-google-oauth2,您可以采取另一种方法:
Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, 'GOOGLE_CLIENT_ID', 'GOOGLE_CLIENT_SECRET', { :name => 'google' } provider :google_oauth2, 'GOOGLE_CLIENT_ID', 'GOOGLE_CLIENT_SECRET', { :name => 'google_full', :scope => 'extra_scope', :prompt => 'consent', :include_granted_scopes => 'true' } end
型查看Google的增量授权指南以了解更多详细信息。请注意,通过更改提供程序的name,OmniAuth URL将更改为/auth/new_name,然后request.env['omniauth.auth']['provider']将返回new_name。
/auth/new_name
request.env['omniauth.auth']['provider']
new_name
1条答案
按热度按时间iyr7buue1#
您可以使用
name
选项。这应该适用于任何OmniAuth提供程序:字符串
但是,使用omniauth-google-oauth2,您可以采取另一种方法:
型
查看Google的增量授权指南以了解更多详细信息。
请注意,通过更改提供程序的
name
,OmniAuth URL将更改为/auth/new_name
,然后request.env['omniauth.auth']['provider']
将返回new_name
。