Как выполнять запросы jQuery AJAX с помощью Facebook C # SDK и ASP.NET MVC - PullRequest
0 голосов
/ 29 марта 2011

Я пытаюсь сделать JQuery AJAX-вызов на свой контроллер MVC в моем Facebook C # SDK приложении Canvas, например:

$('#btnGetInfo').click(function () {
   $.getJSON("/Home/GetInfo", null, 
   function (result) {

   });
   return false;
});

Контроллер:

public ActionResult GetInfo()
{
  // do some Facebook call 
  var fb = new FacebookClient();
  dynamic albums = fb.Get(string.Format("/{0}/photos", friendID));
}

Тогда я получу (OAuthException) An access token is required to request this resource, что, я полагаю, более или менее ожидаемо. Поэтому я пытаюсь украсить метод:

[CanvasAuthorize(Permissions = "user_about_me,user_photos,.....)]
public ActionResult GetInfo()
{
   ...
}

Но тогда метод никогда не вызывается со страницы.

В примере проекта из CodePlex размещение кода в домашнем контроллере Index () работает, поэтому это не проблема конфигурации, не в приложении и не в настройках Facebook. Я почти уверен, что это как-то связано с сохранением информации аутентификации через посты. Возможно, класс CanvasAuthorizer должен быть как-то задействован, может быть, вещи signed_request? Я новичок в программировании на FB и с трудом собираю кусочки ...

Обновление: если я вызываю свой метод, используя стандартный

<%: Html.ActionLink("DoThis", "GetInfo", "Home")%> 

вызов, метод выполняется корректно (с подписанным запросом), поэтому вопрос сейчас; Как я могу сделать вызов jQuery для моего контроллера ASP.NET MVC?

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Трюк состоял в том, чтобы опубликовать данные подписанного запроса в вызове ajax (спасибо ntotten):

$.getJSON('/Home/GetInfo',  { "signed_request": '<%=Request.Params["signed_request"] %>' },
            function (result) {
                alert("Done");
            });
0 голосов
/ 29 марта 2011

Вы установили переменные Facebook в вашем файле web.config? Возможно, вы захотите использовать NuGet для ссылки на проект, так как Prabir (один из основных разработчиков SDK) подключил пакет NuGet для автоматической настройки вашего web.config с пользовательскими элементами конфигурации (вам все еще нужно иметь приложение Facebook и подключить config со всей необходимой дополнительной информацией, такой как секрет вашего приложения и идентификатор приложения (это две основные вещи, которые вам нужны)

...