2

问题:如何将批准提示设置为自动?它默认为“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'

上下文:谷歌 OAuth2

客户端库:google-api-ruby-client

参考:对于 php 客户端的相同问题:
Google+ OAuth API 在首次登录和授权后存储和检索令牌

印章文档。我找不到approval_prompt setter http://signet.rubyforge.org/api/Signet/OAuth2/Client.html

4

2 回答 2

3

这就是我解决问题的方法。

我编写了一个单独的辅助方法,它将生成 Google OAuth URI

def build_auth_uri
return @client.authorization.authorization_uri(
 :approval_prompt => :auto
).to_s 

结尾

接下来,我没有直接在我的视图中引用 Google OAuth URI,而是调用了 helper。

那成功了。

于 2012-07-11T20:41:39.227 回答
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"
}

在此处查看文档以获取更多信息。

于 2013-04-28T22:21:38.077 回答