Facebook C # Iframe Авторизация - PullRequest
       13

Facebook C # Iframe Авторизация

0 голосов
/ 16 декабря 2010

У меня есть приложение IFrame для Facebook, которое использует Facebook C # SDK. Я также использую jquery и загружаю некоторые компоненты страницы асинхронно. Например, я вызываю следующий javascript с главной страницы (в этот момент пользователь проходит проверку подлинности)

$.ajax({            
    type: "POST",
    url: "Ajax/GetMyBalance.aspx",        
    datatype: 'text',
    success: function (html) {
        $('#balance_div').html(html);
    }
    });

Проблема в том, что в GetMyBalance.aspx:PageLoad пользователь не аутентифицирован. Я попытался добавить

 FacebookApp app = new FacebookApp();
 CanvasAuthorizer auth = new CanvasAuthorizer(app);
 if (!auth.IsAuthorized()) // always true when page is loaded first time
 {
    var url = auth.GetLoginUrl(new HttpRequestWrapper(Request));
    var content = CanvasUrlBuilder.GetCanvasRedirectHtml(url);
    Response.ContentType = "text/html";
    Response.Write(content);
    Response.End();
 }

до GetMyBalance.aspx:PageLoad; он аутентифицировал пользователя, но также перенаправил браузер на Myapp/Ajax/GetMyBalance.aspx, что может иметь смысл, но это абсолютно не то, что я хотел. Как я могу аутентифицировать пользователя в этом случае? Спасибо за ваши ответы.

Ответы [ 3 ]

1 голос
/ 06 января 2011

Вы можете сделать это без файлов cookie. Установите cookieSupport = false в настройках SDK и инициализируйте клиентскую библиотеку Javascript с помощью cookie = false. Затем получите токен аутентификации с помощью клиентской библиотеки Javascript перед публикацией, передайте токен аутентификации на сервер и используйте его для создания экземпляра своего экземпляра FacebookApp.

        FB.getLoginStatus(function (response) {
          if (response.session) {
            $('#AuthToken').val(response.session.access_token);
            $('form').ajaxSubmit(options);
            return false;
          } else {
            // not logged in, prompt them to retry
            return false;
          }
        }, true);
1 голос
/ 16 декабря 2010

Вы пытались включить поддержку файлов cookie в facebookSettings?

<facebookSettings apiKey="blah" apiSecret="blah" appId="blah" cookieSupport="true" />
0 голосов
/ 17 января 2011

Итак, cookieSupport не является допустимым свойством:

"Сообщение об ошибке синтаксического анализатора: нераспознанный атрибут cookieSupport. Обратите внимание, что имена атрибутов чувствительны к регистру."

--- обновление ---

Мои извинения, я нашел это: http://facebooksdk.codeplex.com/releases/view/59012

В SDK 4.2.1 cookieSupport работает автоматически, поэтому я получил ошибку

...