我正在使用javascript sdk来实现facebook登录。是否可以将用户重定向到完整的登录页面而不是显示弹出窗口?我尝试添加display:'page'但似乎没有做任何事情。
FB.init({
appId: '123456789',
cookie: true,
status: true,
xfbml: true,
frictionlessRequests: true,
oauth: true
});
function login() { //this function called on click of login button
FB.login(function (response) {
//my code
}, { scope: 'email,publish_stream,read_stream,offline_access' });
});
由于
答案 0 :(得分:3)
登录facebook-javascript-sdk总是打开弹出窗口至少为我打开。如果您希望它显示在完整页面而不是弹出窗口中,您应该考虑其他选项,如服务器端身份验证,其中设置选项display:page
有效。
答案 1 :(得分:1)
这篇文章的答案之一对我有用:Facebook login without pop-up?
这是代码。它应该在window.onload
var APPID = "YOUR_APP_ID"
var uri = encodeURI('http://example.com');
FB.init({ appId: APP_ID,
status: true, // check login status
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
//user is logged in
} else {
window.location = encodeURI("https://www.facebook.com/dialog/oauth?client_id=" + APPID + "&redirect_uri="+uri+"&response_type=token");
}
});
为了完整起见,这里是加载FB JS SDK的代码。
// Load the SDK asynchronously
(function (d) {
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement('script');
js.id = id;
js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));