Facebook使用javascript sdk登录而无需弹出窗口

时间:2012-10-27 14:32:46

标签: javascript jquery facebook facebook-graph-api facebook-javascript-sdk

我正在使用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' });
});

由于

2 个答案:

答案 0 :(得分:3)

登录总是打开弹出窗口至少为我打开。如果您希望它显示在完整页面而不是弹出窗口中,您应该考虑其他选项,如服务器端身份验证,其中设置选项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));