我有一个遗留应用程序,我一直致力于转换为Omniauth,因为该应用程序目前连接到Twitter和Facebook等多个第三方平台。在客户端集成Omniauth for Facebook比从头开始构建它要花费更多的时间。想要最后一步,希望能得到社区的见解。
我在/示例Sinatra应用程序中的omniauth-facebook中的示例用于客户端流程,但我在日志中不断收到以下错误:
Started GET "/auth/facebook/callback" for 127.0.0.1 at Sat Dec 31 07:52:01 -0500 2011
Started GET "/auth/failure?message=invalid_credentials" for 127.0.0.1 at Sat Dec31 07:52:04 -0500 2011
Processing by FacebookUsersController#failure as Parameters {"message"=>"invalid_credentials"}
我能够在另一个分支中使用服务器端流程来实现此功能,但客户端流程出现问题。这是相关文件。发生了什么事?
配置/初始化/ omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'xxx', 'xxx', :scope => 'email', :display => 'popup'
end
配置/ routes.rb中
match '/auth/:provider/callback' => 'facebook_users#login_or_register_fb_user'
match '/auth/failure' => 'facebook_users#failure'
应用/视图/布局/ application.haml 这实际上是通过部分包含在布局中的,这是在页面上加载的最后一件事。
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'xxx', // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional initialization code here
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
$(function() {
$('.facebook_button').click(function(e) {
e.preventDefault();
FB.login(function(response) {
if (response.authResponse) {
$.get('/auth/facebook/callback');
}
}, { scope: 'email'});
});
});
</script>
应用/控制器/ facebook_users_controller.rb
class FacebookUsersController < ApplicationController
def login_or_register_fb_user
respond_to do |f|
f.js {
MultiJson.encode(request.env)
}
end
end
def failure
respond_to do |f|
f.js {
MultiJson.encode(request.env)
}
end
end
end
当我尝试登录facebook用户时,我在日志中看到“/ auth / failure?message = invalid_credentials”的任何想法?在我的应用程序控制器中是否还有我需要的东西 - 一个解析Facebook cookie之前的过滤器?我在这里不知所措。我很确定我的设置是正确的。
此应用的Facebook设置:
谢谢你的帮助。