Нулевая сессия с Facebook C # SDK 4.0.2 - PullRequest
0 голосов
/ 22 апреля 2011

Я работаю с Facbook C # SDK v4.0.2, потому что это то, что включено в Sitefinity CMS Telerik.Я пытался обновить, но Sitefinity жалуется.

Кто-нибудь знает, верна ли v4.0.2?Я вошел в систему, используя FB JS SDK и <fb:login-button/>, и я могу запрашивать API через JavaScript.Когда я пробую это с C # SDK, я всегда получаю (new FacebookApp).Session == null.Я использую SDK в приложении webforms, но пример, из которого я исходил, взят из примера MVC SDK.

Пример SDC 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 голосов
/ 23 апреля 2011

Я не могу сказать, используете ли вы winforms или asp.net, попробуйте использовать вместо этого этот 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
0 голосов
/ 26 июля 2011

В итоге я скачал исходный код для SDK 4.2, изменил версию сборки в AssemblyInfo.cs на версию 4.0.2 и перекомпилировал.Таким образом, я обманул Sitefinity, думая, что он использует 4.0.2 SDK, когда он действительно использует 4.2.Это полностью обошло мой первоначальный вопрос, но теперь, по крайней мере, все работает.

0 голосов
/ 23 апреля 2011

Я бы определенно попытался выполнить обновление до версии 5. С одной стороны, у вас могут быть небольшие проблемы с обновлением, но вы избежите больших проблем при работе со старой версией.

...