【问题标题】:Oauth2 google-api-ruby-client: How to set Approval Prompt to Auto?Oauth2 google-api-ruby-client:如何将 Approval Prompt 设置为 Auto?
【发布时间】:2012-07-08 12:24:16
【问题描述】:

问题: 如何将批准提示设置为自动?默认为 '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 store and retrieve tokens after first login and authorization

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

【问题讨论】:

    标签: ruby google-api oauth-2.0 google-plus


    【解决方案1】:

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

    在 /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 了解更多信息。

    【讨论】:

      【解决方案2】:

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

      我编写了一个单独的帮助方法来生成 Google OAuth URI

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

      结束

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

      成功了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-01
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多