Атрибут Facebook SDK CanvasAutorize перенаправляет мой вызов ajax и не достигает кода контроллера - PullRequest
3 голосов
/ 15 февраля 2011

У меня есть приложение FB, которое хорошо работает с обратными вызовами из MVC, но когда я пытаюсь отправить некоторые данные в контроллер, имеющий атрибут requireauthorize, используя jquery $ .post (), FB перенаправляет его, и я могу не заставить это работать. Вместо этого он возвращает только блок кода скрипта, который, я считаю, является перенаправлением с FB или чего-то подобного.

Пример: кнопка интерфейса Нажмите код

//Client side JS button click event
$.post("/Friends/Save", "{ 'requestIds':'"+ response.request_ids + "'}", function (data) {
    alert("Friend requests saved!");
});

Код моего контроллера MVC:

[HandleError]
public class FriendsController : Controller
{
    [CanvasAuthorize(Perms = "user_about_me")]
    public JsonResult Save(string requestIds)
    {
        //Save to DB
        //(....)

        return Json(new { Status = "Saved!" });
    }
}

Если я прокомментирую атрибут, все работает нормально, Кто-нибудь может мне помочь, как это можно сделать? Мне нужно проверять каждый пост, что это сделал пользователь, вошедший в систему FB!

Заранее спасибо! Всем хорошего дня!

1 Ответ

2 голосов
/ 15 февраля 2011

Я испытал эту же проблему. Мое решение состояло в том, чтобы отделить методы контроллера Get и Post (через [AcceptVerbs (HttpVerbs.Get)] и [AcceptVerbs (HttpVerbs.Post)]) и только поместить атрибут [CanvasAuthorize] в метод Get. Когда я выполняю свою почту ajax, я включаю подписанный запрос в почту, которую я могу использовать для получения токена доступа.

...