0

我正在使用 Facebook JavaScript SDK 登录 Facebook,唯一的问题是 JavaScript 代码在控制器之后执行。

我想要的只是在进入控制器之前检查用户是否登录。

有什么帮助吗?

这是java脚本代码

<script type="text/javascript">
window.fbAsyncInit = function () {
    FB.init({ appId: '@Facebook.FacebookApplication.Current.AppId', channelURL: '@Request.Url.Scheme://@Request.Url.Authority@Url.Content("~/fbchannel.ashx")', cookie: true, xfbml: true, oauth: true });
    FB.Event.subscribe('auth.login', function (response) { window.location.reload(); });
    FB.Event.subscribe('auth.logout', function (response) { window.location.reload(); });
    FB.Event.subscribe('auth.authResponseChange', function (response) {
        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            $.ajax({
                url: '/Home/SaveAccess',
                type: 'POST',
                data: { A: accessToken },
                success: function (data) {
                },
                error: function() {}
            });
            var field = document.createElement("input");
            field.setAttribute("type", "hidden");
            field.setAttribute("name", 'accessToken');
            field.setAttribute("value", accessToken);
            form.appendChild(field);

            document.body.appendChild(form);
            form.submit();


        } else if (response.status === 'not_authorized') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            $.ajax({
                url: '/Home/SaveAccess',
                type: 'POST',
                data: { A: accessToken },
                success: function () {
                }
            });
        } else {
        }
    });
(function(d){
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    d.getElementsByTagName('head')[0].appendChild(js);
}(document));

我将访问令牌保存在会话中,问题是此代码在控制器代码之后执行。

4

1 回答 1

0

不明白你到底想要什么。这是我所做的解决方案。

您可以FB.getLoginStatus随时致电以检查用户是否已连接。

    FB.getLoginStatus(function (response) {
        if (response.status === 'connected') {
              // user logged in and connected        
       }
    });

您还可以将其添加fbAsyncInit到每次页面加载时检查用户状态。

于 2013-03-01T08:50:01.617 回答