У меня есть старое приложение, которое я работаю, чтобы преобразовать в Omniauth, поскольку приложение в настоящее время подключается к нескольким сторонним платформам, таким как Twitter и Facebook.Интеграция Omniauth для Facebook на стороне клиента требует гораздо больше времени, чем создание его с нуля.Хочу сделать еще один шаг, надеюсь, с учетом мнения сообщества здесь.
Я следовал примеру в omniauth-facebook в приложении / example Sinatra для потока на стороне клиента, но я продолжаю получать следующееошибка в моих журналах:
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"}
Мне удалось заставить это работать, используя поток на стороне сервера в другой ветви, возникли проблемы с потоком на стороне клиента.Вот соответствующие файлы.Что происходит?
config / initializers / omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'xxx', 'xxx', :scope => 'email', :display => 'popup'
end
config / rout.rb
match '/auth/:provider/callback' => 'facebook_users#login_or_register_fb_user'
match '/auth/failure' => 'facebook_users#failure'
app / views / layouts / 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>
app / controllers / 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
Любые идеи, почему я вижу "/ auth / fail? message = invalid_credentials" в моих журналах, когда я пытаюсь войти в систему пользователя Facebook?Есть ли что-то, что мне нужно в контроллере приложения - фильтр перед анализом файла cookie Facebook или что-то в этом роде?Я в недоумении здесь.Я уверен, что мои настройки верны, иначе.
Настройки Facebook для этого приложения:
Спасибо за руку.