4

彼のRailscastを介して、RyanのFacebookログインのJS実装を実装しようとしています: http://railscasts.com/episodes/360-facebook-authentication

サーバー側の認証は素晴らしく機能します-問題はありません-しかし、JSポップアップを介して試してみると、次のエラーが発生し続けます。

ここに画像の説明を入力

また、私のサーバー出力レコード:

(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError

原因は、(ASCIIcast の下部にある Ryan の JS コードから) コールバック URL にデータが渡されていないことです。

window.location = '/auth/facebook/callback' if response.authResponse

しかし、私は Omniauth がどのように機能するかを確実に知るには十分ではありません。誰でもこれで私を助けることができますか?特定のファイルを投稿する必要がある場合はお知らせください。ただし、Ryan がスクリーンキャストで既に言及していることはすべてそのままである必要があります。


更新:だから私はこの投稿を見つけたところ、JS が正しく呼び出されているように見えるので、困惑しています。:(


別の更新: ブラウザ コンソールを使用して、自分のステータスをうまく操作できるようです。電話FB.login()をかけるとウィンドウが表示され、入力できるのでログインできます。

FB.getLoginStatus(function(resp) { console.log(resp.status); });

...有効な資格情報で接続されていることを確認します。だから今、なぜこれが機能しないのか本当に困惑しています...

参考までに、ページに読み込まれた JS を次に示します。

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: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true)

  $('*[data-js="fb_login"]').click (e) ->
    e.preventDefault()
    FB.login (response) ->
      window.location = '/auth/facebook/callback' if response.authResponse

  $('*[data-js="logout"]').click ->
    FB.getLoginStatus (response) ->
      FB.logout() if response.authResponse
      true

<%= ENV["FACEBOOK_APP_ID"] %>はい、 IS が正しい Facebook アプリ ID を返すことを確認しました。

4

1 に答える 1

0

「標準」ポート 80/443 以外で JS SDK を使用すると、いくつかの問題があります。

これらのポート (HTTP の場合は 80、HTTPS の場合は 443) のいずれかを使用するようにローカル テスト マシンをセットアップしてみて、問題が解決しないかどうかを確認してください。

于 2012-07-12T12:53:26.983 に答える