彼の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 を返すことを確認しました。