使用Facebook C#SDK 4.0.2进行无效会话

时间:2011-04-22 16:00:02

标签: c# facebook facebook-c#-sdk sitefinity

我正在使用Facbook C#SDK v4.0.2,因为这是Telerik的Sitefinity CMS中包含的内容。我尝试更新,但Sitefinity抱怨。

有谁知道v4.0.2是否仍然有效?我使用FB JS SDK和<fb:login-button/>登录,我可以通过JavaScript查询API。当我使用C#SDK尝试时,我总是得到(new FacebookApp).Session == null。我在webforms应用程序中使用SDK,但我要说的示例来自SDK的MVC示例。

SDK MVC示例:

    public ActionResult Profile()
    {
        var app = new FacebookApp();
        if (app.Session == null)
        {
            // The user isnt logged in to Facebook
            // send them to the home page
            return RedirectToAction("Index");
        }

        // more example code ...
    }

我正在做类似的事情:

    var app = new FacebookApp();
    if (app.Session != null)    
    {
        FormsAuthentication.SetAuthCookie(user.UserName, false);    
    }
    else
    {
        //user is logged in to facebook but has not registered.
        response.Redirect("register.aspx?needsFacebook=1", true);
    }

v.4.0.2仍然有效吗?如果用户通过Facebook验证,这是我应该检查服务器的方式吗?

3 个答案:

答案 0 :(得分:0)

我肯定会尝试更新到第5版。一方面,您可能会遇到一些小问题升级,但是您可以避免使用旧版本时遇到更大的问题。

答案 1 :(得分:0)

我无法判断您是使用winforms还是asp.net,无论哪种方式都尝试使用this API,看看它是否解决了您的问题。它应该只花几分钟来确定它是否有效。

要进行身份验证,您可以为winforms执行以下操作:

这将在表单上单击按钮时对用户进行身份验证。

Imports Branches.FBAPI
...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim SI As New SessionInfo("[application_id]","applicaiton_secret")
     ' Add an event handler so that you can process
     ‘ the response when the user is authenticated
     AddHandler SI.AuthenticationResult, AddressOf ReadResponse
     ' Call the function to display a form to the user and log them into Facebook
     SI.AuthenticateUser(Me, False)
End Sub

当进程完成时,将触发事件调用ReadResponse并包含与所有其他身份验证步骤中相同的响应对象。

Sub ReadResponse(ByVal FBR As Branches.FBAPI.SessionInfo.FacebookResponse)
     Label1.Text &= " - " & FBR.UserID
     Me.BringToFront()
End Sub

答案 2 :(得分:0)

我最终下载了4.2 SDK的源代码,将AssemblyInfo.cs中的程序集版本更改为版本4.0.2并重新编译。因此,当我真正使用4.2时,我欺骗了Sitefinity认为它正在使用4.0.2 SDK。这完全回避了我原来的问题,但至少现在一切正常。