我搬到了omniauth-facebook,它工作的非常好。我一直在嘗試使用彈出登錄按鈕,但我無法讓它工作。Omniauth-Facebook:登錄彈出窗口不重定向
我跟着https://github.com/mkdynamic/omniauth-facebook/blob/master/example/config.ru上的例子來了解rails應用程序。
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : '#{ENV['APP_ID']}',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
};
(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() {
$('a').click(function(e) {
e.preventDefault();
FB.login(function(response) {
if (response.authResponse) {
$.get('/auth/facebook/callback');
}
}, { scope: '#{SCOPE}' });
});
});
</script>
<p>
<a href="#">Connect to FB</a>
</p>
它幾乎工程:點擊鏈接會顯示彈出式窗口,我得到驗證,但是當彈出關閉我留在登錄頁面上,即使我可以在目標頁面處理的日誌中看到,如果我點擊一個可供客人和會員使用的鏈接,我將獲得會員版本,這是登錄工作的另一個證明。
那爲什麼即使登錄成功,瀏覽器也不會重定向?我應該修改控制器方法中的某些內容(例如使用特殊格式的「respond_to」)來記錄用戶嗎?
感謝
重定向在/ auth/facebook/callback(UserSessionsControler#create_with_provider)調用的控制器方法中。 – Nycen
這是一個ajax請求,它本身並不改變頁面,它實際上很奇怪,因爲你[從服務器獲取某些東西](http://api.jquery.com/jQuery.get/),但是你的'不要做任何事情。 – ori
嗯,我想我會做一些事情,通過使用一個format.js和重定向的respond_to,但它不被調用,當我跟蹤發生的事情時,它通過format.html。或者我應該呈現一個rjs視圖來重新加載頁面? – Nycen