2013-02-28 28 views
0

我使用Facebook JavaScript SDK与Facebook登录, 唯一的问题是JavaScript代码在控制器后执行。ASP.Net MVC检查Facebook在控制器中执行代码之前的登录状态

我想要的是检查用户是否登录后再去控制器。

任何帮助?

这是java脚本代码

<script type="text/javascript"> 
window.fbAsyncInit = function() { 
    FB.init({ appId: '@Facebook.FacebookApplication.Current.AppId', channelURL: '@Request.Url.Scheme://@[email protected]("~/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)); 

我保存访问令牌在一个会议上,问题是,这种代码的控制器代码后执行。

+0

请详细说明或张贴一些代码。不要放弃假设。 – 2013-02-28 12:49:25

+0

我添加了一些代码供您查看。 – 2013-02-28 13:13:23

回答

0

不明白你想要什么。这是我所做的一个解决方案。您可以随时拨打FB.getLoginStatus来检查用户是否连接。

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

您也可以在fbAsyncInit内容添加到每次检查用户状态的页面加载。

相关问题