1

我的问题是:
如果我已经登录了 facebook,那么它会自动重定向页面并登录到我的网站。

我需要的是,即使我登录到 facebook,它也应该留在页面上,当我点击“facebook 登录”按钮后,它会登录到我的网站。

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

    // Init the SDK upon load
    window.fbAsyncInit = function() {
        FB.init({
            appId: 'XXXXXXXXXXX', // App ID
            channelUrl: '//' + window.location.hostname + '/channel', // Path to your     Channel File
            status: true, // check login status
            cookie: true, // enable cookies to allow the server to access the session
            xfbml: true  // parse XFBML
        });

        FB.Event.subscribe('auth.login', function(response) {
            if (response.status === 'connected') {
                FB.api('/me', function(me) {
                    if (me.name) {
                        // the user is logged in and connected to your
                        // app, and response.authResponse supplies
                        // the user’s ID, a valid access token, a signed
                        // request, and the time the access token
                        // and signed request each expire
                        var uid = response.authResponse.userID;
                        var accessToken = response.authResponse.accessToken;
                        done1(uid, accessToken, me.email, me.name);
                    }
                })
            }

        });

        FB.Event.subscribe('auth.logout', function(response) {
        });


        // listen for and handle auth.statusChange events
        FB.Event.subscribe('auth.statusChange', function(response) {
            if (response.authResponse) {
                // user has auth'd your app and is logged into Facebook
                FB.api('/me', function(me) {
                    if (me.name) {
                        document.getElementById("authdisplayname").innerHTML = me.name;
                        if (response.status === 'connected') {
                            var uid = response.authResponse.userID;
                            var accessToken = response.authResponse.accessToken;
                            done1(uid, accessToken, me.email, me.name);
                        }
                    }
                })
                document.getElementById('auth-loggedout').style.display = 'none';
                document.getElementById('auth-loggedin').style.display = 'block';
            } else {
                // user has not auth'd your app, or is not logged into Facebook
                document.getElementById('auth-loggedout').style.display = 'block';
                document.getElementById('auth-loggedin').style.display = 'none';
            }
        }); 
        $("#authlogoutlink").click(function() { FB.logout(function() { window.location.reload(); }); });
    }

    function done1(a, b, c, d) {
        document.getElementById("<%= uid.ClientID %>").value = a;
        document.getElementById("<%= token.ClientID %>").value = b;
        window.location = "http://localhost:59019/fgfgf_2008/new_login.aspx?token=" + b + "&email=" + c + "&name=" + d;
    }
</script>

HTML 代码:

<div id="fb-root">
</div>

<div>
    <div id="auth-status">
        <div id="auth-loggedout">
            <div class="fb-login-button" onlogin="done();" autologoutlink="true" scope="email,user_checkins">
                Log in with Facebook</div>
        </div>
        <div id="auth-loggedin" style="display: none">
            Hi, <span id="authdisplayname" runat="server"></span>(<a href="#" id="authlogoutlink">logout</a>)
        </div>
    </div>
</div>
4

1 回答 1

2

我不是 facebook 登录问题的专家,但在阅读了您的问题后,看起来如果 facebook 用户登录到其 facebook 帐户,那么它也会自动登录到您的应用程序。但是您希望它发生在用户单击登录按钮时,对。

您可以做的是,您可以创建一个“FacebookLogin()”函数,然后可以在点击事件上调用该函数。

就像是:

在 HTML 按钮上

<div class="fb-login-button" onclick="FacebookLogin()" onlogin="done();" autologoutlink="true" scope="email,user_checkins">
                Log in with Facebook</div>

在您的情况下,我不太确定,但它对我有用,尝试一次,删除您的所有FB.Event.subscribe('auth.login', function(response)功能,并使用 FB.login() 功能,然后将用户信息重定向到您想要的页面。在这里,我将它重定向到 Login.aspx 页面。

在javascript函数中

function FacebookLogin() {
    FB.login(function(response) {
        if (response.authResponse) {
            window.location = "/Login.aspx?NewFacebookConnect=true&accessToken=" + response.authResponse.accessToken + "&userID=" + response.authResponse.userID;
        }
    });
}
于 2012-06-08T11:21:51.460 回答