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

使用javascript sdk登录Facebook,无需弹出窗口,javascript,jquery,facebook,facebook-graph-api,facebook-javascript-sdk,Javascript,Jquery,Facebook,Facebook Graph Api,Facebook Javascript Sdk,我正在使用javascript sdk实现facebook登录。是否可以将用户重定向到完整登录页面,而不是显示弹出窗口?我尝试添加显示:“页面”,但似乎没有任何作用 FB.init({ appId: '123456789', cookie: true, status: true, xfbml: true, frictionlessRequests: true, oauth: true }); function login() { //this

我正在使用javascript sdk实现facebook登录。是否可以将用户重定向到完整登录页面,而不是显示弹出窗口?我尝试添加显示:“页面”,但似乎没有任何作用

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' });
});

谢谢

登录时,至少会在弹出窗口中为我打开。如果你想让它显示在完整页面而不是弹出窗口,你应该考虑其他选项,比如服务器端认证,设置选项>代码>显示:页面 Works.

登录,它总是在弹出窗口中打开,至少对于我来说是这样。如果你想让它显示在完整页面而不是弹出窗口,你应该考虑其他选项,比如服务器端认证,设置选项>代码>显示:页面< /Cord> Works.

< P>这个帖子的答案之一为我工作:

这是代码。它应该在
窗口之后运行。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");
    }
});
为了完整起见,下面是加载FBJSSDK的代码

// 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));

这篇帖子上的一个答案对我很有用:

这是代码。它应该在
窗口之后运行。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");
    }
});
为了完整起见,下面是加载FBJSSDK的代码

// 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));

该文档称为“登录时不使用Javascript SDK”,但当然,除了登录之外,您还可以在应用程序的其余逻辑中使用SDK。(尽管您可能每次都必须手动传递SDK操作的访问令牌,因为SDK没有提供用于设置访问令牌的文档化方法。)对于给定用户,访问令牌是否始终相同?它通常存储在DB中还是浏览器缓存中?还有,为什么我在使用SDK时不必处理访问令牌呢?不,不会。客户端站点获取的访问令牌仅在大约2小时内有效。是的,它存储在客户端的cookies中。当使用内置的
FB.login
进行身份验证时,您不必处理它,因为这需要设置适当的cookie和脚本内部值。但也有可能SDK已经在不使用SDK流的情况下从登录重定向URL的哈希部分获取访问令牌-我在客户端登录时从未使用过此方法,所以你可以试试,告诉我们结果。该文档称为“登录时不使用Javascript SDK”,但当然,除了登录之外,您还可以在应用程序的其余逻辑中使用SDK。(尽管您可能每次都必须手动传递SDK操作的访问令牌,因为SDK没有提供用于设置访问令牌的文档化方法。)对于给定用户,访问令牌是否始终相同?它通常存储在DB中还是浏览器缓存中?还有,为什么我在使用SDK时不必处理访问令牌呢?不,不会。客户端站点获取的访问令牌仅在大约2小时内有效。是的,它存储在客户端的cookies中。当使用内置的
FB.login
进行身份验证时,您不必处理它,因为这需要设置适当的cookie和脚本内部值。但也有可能SDK已经在不使用SDK流的情况下从登录重定向URL的哈希部分获取访问令牌-我在客户端登录时从未使用过此方法,所以你可以试试,告诉我们结果。嗨,Smita,我正在使用javascript sdk及其打开的弹出窗口进行身份验证。是否有任何选项可用于防止弹出和打开页面替代它或任何其他选项。你帮我感激我。提前感谢。使用参数display:page应该可以做到这一点,尽管我上一次尝试在使用JavaScript SDK时并不奏效。对于服务器端身份验证,显示:页面按预期工作。签出此。这可能会有所帮助。感谢Smita您的评论。感谢我。嗨,Smita,我正在使用javascript sdk及其打开的弹出窗口进行身份验证。是否有任何选项可用于防止弹出和打开页面替代它或任何其他选项。你帮我感激我。提前感谢。使用参数display:page应该可以做到这一点,尽管我上一次尝试在使用JavaScript SDK时并不奏效。对于服务器端身份验证,显示:页面按预期工作。签出此。这可能会有所帮助。谢谢Smita您的评论。感谢我。您好,假设您的答案对我不起作用,您可以在这里发布所有javascript SDK代码,这些代码在没有打开facebook SDK弹出窗口的情况下工作吗?。谢谢你的帮助。提前谢谢。我添加了一些细节,但除非你能更好地描述你遇到的问题,否则我真的帮不了你。你好,假设你的答案对我不起作用,你能在这里发布所有javascript SDK代码吗?没有打开facebook SDK的弹出窗口?。谢谢你的帮助。提前谢谢。我补充了一些细节,但我真的不能帮你,除非你能更好地描述你遇到的问题。