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'

コンテキスト: Google OAuth2

クライアント ライブラリ: google-api-ruby-client

参照: PHP クライアントに対する同じ質問 :
Google+ OAuth API のストアと最初のログインと認証後のトークンの取得

シグネットのドキュメント。approval_prompt セッターが見つかりません 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 を直接参照する代わりに、ヘルパーを呼び出しました。

それはトリックをしました。

于 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 に答える