Omniauth-facebook不断报告invalid_credentials

pet*_*man 28 facebook ruby-on-rails omniauth

我正在尝试按照Railscast#360中的描述实现omniauth-facebook,并遇到了相当大的障碍.当我点击登录链接时,我得到了所需的弹出窗口,要求我输入我的facebook凭据,但是当我提交时,我得到一个OmniAuth :: Strategies :: OAuth2 :: CallbackError错误.在apache日志中,打印出来:(facebook)身份验证失败!invalid_credentials:OmniAuth :: Strategies :: OAuth2 :: CallbackError,OmniAuth :: Strategies :: OAuth2 :: CallbackError

这是相关代码:

omn​​iauth.rb

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']
end
Run Code Online (Sandbox Code Playgroud)

sessions_controller.rb

class SessionsController < ApplicationController
  def create
    user = User.from_omniauth(env["omniauth.auth"])
    session[:user_id] = user.id
    redirect_to root_url
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url
  end
end
Run Code Online (Sandbox Code Playgroud)

application.html.erb

<div id="fb-root"></div>
<script>        
window.fbAsyncInit = function() {
    FB.init({
        appId      : '(**my app id**)', // App ID
        status     : true, // check login status
        cookie     : true // enable cookies to allow the server to access the session
    });

    $('#sign_in').click(function(e) {
        e.preventDefault();
        return FB.login(function(response) {
            if (response.authResponse) {
                return window.location = '/auth/facebook/callback';
            }
        });
    });

    return $('#sign_out').click(function(e) {
        FB.getLoginStatus(function(response) {
            if (response.authResponse) {
                return FB.logout();
            }
        });
        return true;
    });
};
 </script>
Run Code Online (Sandbox Code Playgroud)

我错过了一些简单的事吗?过去几天我一直在寻找解决方案.

Tom*_*und 68

似乎omniauth-facebook v1.4.1引入了CSRF的一个问题.临时修复只是回滚到v1.4.0.在您的Gemfile中,将omniauth-facebook行更改为:

gem 'omniauth-facebook', '1.4.0'
Run Code Online (Sandbox Code Playgroud)

我已经报告了这个问题:https://github.com/mkdynamic/omniauth-facebook/issues/73

  • 汤姆,你已经结束了沮丧的日子.有一些清理工作要做,但这个简单的解决方案解决了这个问题.非常感谢您对此进行调查! (6认同)
  • 优秀!上帝爱你 - 和stackoverflow. (4认同)

Pra*_*ela 6

我有一个类似的问题,它为1个用户工作,但获得第二个用户的身份验证错误.

禁用沙盒模式(应用程序>设置>高级)似乎已修复它.