2011-02-17 77 views
0

我想在vb.net中使用Facebook C#SDK構建一個Facebook WebApp。這個SDK可以用於vb.net,我知道。不過,我試圖讓我的應用程序登錄頁面加載。我可以讓它登錄,但是我的應用程序不能識別它已經登錄,並繼續循環登錄,直到我停止它。這是我的代碼。Facebook-C#-SDK不會停止「登錄」

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim faceauth As New FacebookClient 
    Dim fbsession As New FacebookSession 
    If faceauth.AccessToken.Length = 0 Then 
     Dim appId As String = ConfigurationManager.AppSettings("facebookappid") 
     Dim extendedPermissions As String() = {"publish_stream", "offline_access", "read_stream", "manage_pages"} 
     Dim oauth = New FacebookOAuthClient() With { _ 
     .ClientId = appId _ 
     } 
     fbsession.Expires = Now.AddDays(1) 
     Dim parameters = New Dictionary(Of String, Object)() From { _ 
     {"response_type", "code_and_token"}, _ 
     {"display", "popup"}, _ 
     {"redirect_uri", "http://newsocialspin.spintest.com/fbcsb.aspx"} _ 
     } 
     If extendedPermissions IsNot Nothing AndAlso extendedPermissions.Length > 0 Then 
      Dim scope = New StringBuilder() 
      scope.Append(String.Join(",", extendedPermissions)) 
      parameters("scope") = scope.ToString() 
     End If 
     Dim loginUrl = oauth.GetLoginUrl(parameters) 
     Response.Redirect(loginUrl.ToString) 
    Else 
     LoggedIn() 
    End If 
End Sub 

我已經嘗試了無數不同的方法讓它識別登錄狀態無濟於事。如果您有任何想法可以幫助,請告訴我,或者如果您的開發人員請糾正我明顯的錯誤。謝謝。

回答

3

您正在爲每個頁面加載創建一個新的FacebookClient,包括重定向的。因此,您對faceauth.AccessToken.Length的檢查始終爲真。您需要擁有一些可以在重定向中生存的cookie或會話值,並在您通過Facebook登錄時進行適當更新。

0

看看this discussion對我有幫助。基本上,您需要確保您運行的是最新版本的SDK,並且Facebook應用程序已正確配置以利用已簽名的請求(當然,您必須提供)。