2013-10-02 78 views
0

我想檢查用戶是否已經使用ASP.NET MVC4中的Facebook登錄。我正在使用Facebook C#SDK。 我有從Facebook獲取此的access_token代碼:如何在ASP.NET MVC 4中檢查登錄的facebook用戶?

public ActionResult FacebookCallback(string code) 
    { 
     var fb = new FacebookClient(); 
     dynamic result = fb.Post("oauth/access_token", new 
     { 
      client_id = "XXXXXXXXXXXXXX", 
      client_secret = "XXXXXXXXXXXXXXXXXXX", 
      redirect_uri = RedirectUri.AbsoluteUri, 
      code = code 
     }); 

     var accessToken = result.access_token; 

     Session["AccessToken"] = accessToken; 

     fb.AccessToken = accessToken; 

     dynamic me = fb.Get("me?fields=first_name,last_name,id,email"); 
     string email = me.email; 

     FormsAuthentication.SetAuthCookie(email, false); 
     return RedirectToAction("Index", "Home"); 
    } 

我不知道如何檢查,如果用戶已經登錄,請幫助。

+0

難道你只是檢查'Session [「AccessToken」]'是否已經存在,如果是的話嘗試使用它來驗證?如果失敗,則強制用戶重新進行身份驗證。 – James

+0

@James我認爲這隻會檢查會話變量是否存在。我如何檢查某人是否已在其他選項卡中登錄Facebook並嘗試首次訪問我的應用程序? –

回答

0

在我看來,如果你願意結賬Facebooks的JavaScript SDK的最簡單的方法,那麼有一個FB.getLoginStatus方法,它會給你你需要的信息。

從Facebook的開發站點摘自:

FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
    // the user is logged in and has authenticated 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; 
    } else if (response.status === 'not_authorized') { 
    // the user is logged in to Facebook, 
    // but has not authenticated your app 
    } else { 
    // the user isn't logged in to Facebook. 
    } 
}); 

也有user_online_presence擴展權限here。可能不是您想要的,但使用FQL,您可以請求online_presence字段here,但請注意,只有當用戶登錄到Facebook用戶聊天時纔會返回。

+0

感謝您的回覆,但有沒有辦法使用Facebook C#SDK做到這一點? –

+0

從什麼意識到有沒有辦法做你的要求服務器端。只需通過FB.getLoginStatus的Javascript路由 – gdp

相關問題