2010-12-16 3 views
0

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

$.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, что может иметь смысл, но это абсолютно не то, что я хотел. Как я могу аутентифицировать пользователя в этом случае? Спасибо за ваши ответы.

ответ

1

Вы можете сделать это без печенья. Установите 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

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

<facebookSettings apiKey="blah" apiSecret="blah" appId="blah" cookieSupport="true" /> 
+0

Спасибо, я полностью забыл об этом. – a1ex07 2010-12-16 17:30:54

0

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

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

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

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

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

Смежные вопросы