问题: 如何将批准提示设置为自动?它默认为'approval_prompt = force'
代码的: 我正在设置这样的客户端。
@client = Google::APIClient.new(
:authorization => :oauth_2,
:host => 'www.googleapis.com',
:http_adapter => HTTPAdapter::NetHTTPAdapter.new
)
@client.authorization.client_id = 'xxxx.apps.googleusercontent.com'
@client.authorization.client_secret = 'xxxx'
上下文:Google OAuth2
客户端库:google-api-ruby-client
参考:php客户端的相同问题:
Google+ OAuth API store and retrieve tokens after first login and authorization
Signet文档。我找不到approval_prompt setter http://signet.rubyforge.org/api/Signet/OAuth2/Client.html
答案 0 :(得分:3)
这就是我解决问题的方法。
我写了一个单独的帮助方法来生成Google OAuth URI
def build_auth_uri
return @client.authorization.authorization_uri(
:approval_prompt => :auto
).to_s
端
接下来,我没有直接在我的视图中引用Google OAuth URI,而是调用了帮助程序。
这就是诀窍。
答案 1 :(得分:0)
这就是我解决问题的方法:
在/app/views/devise/shared/_links.haml(对于_links.erb来说类似):
- if devise_mapping.omniauthable?
- resource_class.omniauth_providers.each do |provider|
- if provider == :google_oauth2
= link_to "Sign in with Google", omniauth_authorize_path(resource_name, provider, approval_prompt: :auto)
- else
= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider)
%br/
编辑:更简单:将它添加到你的devise.rb或omniauth.rb初始化程序(在/ config / initializers中):
provider :google_oauth2, ENV["GOOGLE_KEY"], ENV["GOOGLE_SECRET"], {
approval_prompt: "auto"
}
查看文档here以获取更多信息。