1

Railsアプリケーションでoauth gemを使用しています。

gem 'omniauth-facebook', '1.4.0'
gem "omniauth-google-oauth2"

Facebook クライアント側認証は正しく機能しています。私はついていきます、

http://railscasts.com/episodes/360-facebook-authentication

Google のクライアント側認証が機能していないか、処理できませんでした。

このコーヒー スクリプトが Facebook クライアント側の認証を担当していることがわかります。

jQuery ->
  $('body').prepend('<div id="fb-root"></div>')

  $.ajax
    url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js"
    dataType: 'script'
    cache: true


window.fbAsyncInit = ->
  FB.init(appId: 145280228983243, cookie: true)

  $('#sign_in').click (e) ->
    e.preventDefault()
    FB.login (response) ->
      window.location = '/auth/facebook/callback' if response.authResponse

  $('#sign_out').click (e) ->
    FB.getLoginStatus (response) ->
      FB.logout() if response.authResponse
    true

Google クライアント側認証にはどうすればよいですか?

ユーザーが「Googleでログイン」をクリックしたときにポップアップウィンドウが表示され、ユーザーIDとパスワードを要求する必要があり、要求する前に、ユーザー情報がブラウザーで既に利用可能かどうかを確認する必要があります(クライアント側) ) 可能であれば、ユーザー ID とパスワードの入力を求めるプロンプトを表示せずに、ログインしてください。

4

1 に答える 1

1

私は同じ問題を抱えており、omniauth-google-oauth2 は facebook gem のようにクライアント側の認証をサポートしていないようです。

omn​​iauth-facebook gem は、access_token を構築するときに、署名されたリクエストが存在するかどうかを確認し、それが有効である場合は、request.params または Cookie によって提供される access_token を使用します。それ以外の場合は、提供された authentication_code を使用して Facebook から access_token を照会します。

omn​​iauth-google-oauth2 gem は 2 番目の操作のみを行います。redirect_uri は最初のリクエストと検証リクエストで同じでなければならないため、gem の現在のバージョンをこの方法で使用することはできません。

私は1つのフォークを見つけましたhttps://github.com/pivotal-geostellar/omniauth-google-oauth2/tree/client_loginhttp://pivotallabs.com/facebook-and-googleplus-javascript-sdk-sign-in -with-devise-ror/ですが、サーバー側で検証せずに request.params から access_token を読み取るのは安全ではありません。

アップデート

id_token で access_token を検証する方法を見つけ、gem にプル リクエストを作成しましたhttps://github.com/zquestz/omniauth-google-oauth2/pull/50

于 2013-04-13T14:49:39.513 に答える