Я пытаюсь разрешить пользователю входить через facebook и не перенаправляться с текущей страницы. В настоящее время я использую Rails с omniauth-facebook и создаю для проверки подлинности. Я предполагаю, что лучший способ сделать это через ajax, как только я получил аутентификацию из facebook через Javascript api. Однако я не уверен, что мне нужно передать URL-адрес обратного вызова для omniauth для проверки подлинности. Вот что я в настоящее время (я стараюсь избегать использования JQuery на некоторое время)Использование Omniauth facebook и ajax
:javascript
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'app-id', // App ID from the app dashboard
channelUrl : '//localhost:3000/channel.html', // Channel file for x-domain comms
status : true, // Check Facebook Login status
cookie : true,
xfbml : true // Look for social plugins on the page
});
// Additional initialization code such as adding Event Listeners goes here
document.getElementById('facebook-login').onclick = function(event) {
FB.login(function(response) {
if (response.authResponse) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
console.log(xhr);
if (xhr.readyState == 4) {
console.log(xhr.responseText);
}
}
xhr.open('GET', 'http://localhost:3000/users/auth/facebook/callback', true);
xhr.send(null);
} else {
console.log("Something when horrible wrong");
}
}, {scope: ''});
}
};
// Load the SDK asynchronously
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
Дело я больше не уверен, если я звоню свою собственную конечную точку (пользователи/авториз/facebook/обратный вызов), или если мне нужно что-то передать ему. Любая помощь будет принята с благодарностью.