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
这是相关代码:
omniauth.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
| 归档时间: |
|
| 查看次数: |
15062 次 |
| 最近记录: |