Asp.net mvc 3 ASP.NETMVC在控制器中执行代码之前检查Facebook登录状态

Asp.net mvc 3 ASP.NETMVC在控制器中执行代码之前检查Facebook登录状态,asp.net-mvc-3,facebook-javascript-sdk,Asp.net Mvc 3,Facebook Javascript Sdk,我正在使用Facebook JavaScript SDK登录Facebook, 唯一的问题是JavaScript代码在控制器之后执行 我只想在进入控制器之前检查用户是否登录 有什么帮助吗 这是java脚本代码 <script type="text/javascript"> window.fbAsyncInit = function () { FB.init({ appId: '@Facebook.FacebookApplication.Current.AppId', chan

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

window.fbAsyninit=函数(){
FB.init({appId:'@Facebook.FacebookApplication.Current.appId',channelURL:'@Request.Url.Scheme://Request.Url)。Authority@Url.Content(“~/fbchannel.ashx”)、cookie:true、xfbml:true、oauth:true});
订阅('auth.login',函数(响应){window.location.reload();});
订阅('auth.logout',函数(响应){window.location.reload();});
FB.Event.subscribe('auth.authResponseChange',函数(响应){
如果(response.status===“已连接”){
var uid=response.authResponse.userID;
var accessToken=response.authResponse.accessToken;
$.ajax({
url:“/Home/SaveAccess”,
键入:“POST”,
数据:{A:accessToken},
成功:功能(数据){
},
错误:函数(){}
});
var字段=document.createElement(“输入”);
field.setAttribute(“类型”、“隐藏”);
field.setAttribute(“名称”,“accessToken”);
field.setAttribute(“值”,accessToken);
表单。追加子项(字段);
文件.正文.附件(表格);
表单提交();
}else if(response.status===“未授权”){
var uid=response.authResponse.userID;
var accessToken=response.authResponse.accessToken;
$.ajax({
url:“/Home/SaveAccess”,
键入:“POST”,
数据:{A:accessToken},
成功:函数(){
}
});
}否则{
}
});
(职能(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);
}(文件);


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

无法准确理解您想要的内容。以下是我所做操作的解决方案

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

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

您还可以在
fbAsyncInit
中添加此项,以便在每次加载页面时检查用户状态。

请详细说明或发布一些代码。不要将事情留给假设。我添加了一些代码供您查看。