1

Я только что создал новое приложение facebook, и все работает отлично, за исключением действий контроллера, которые обрабатывают «сообщение» из моего приложения, с фильтром [FacebookAuthorize] на действие; поскольку он создает перенаправление, и все мои данные формы теряются. Вы можете увидеть, что я имею в виду, если изменить только форму, представленную в данном руководстве:ASPNET MVC4 Facebook приложение - FacebookАвторизовать фильтр и опубликовать данные

http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-facebook-birthday-app

<form class="navbar-form pull-right" action="@Url.Action("Search", "Home")" 
method="get"> 
        <input class="span2" type="text" name="friendName" placeholder="Friend's name" /> 
        <button type="submit" class="btn">Search</button> 
       </form> 

Если изменить метод формы в «пост», параметр в моем методе поиска в контроллере есть больше не заполнены. Я сделал некоторые исследования по этому вопросу, и кажется, что фильтр FacebookAuthorize создает перенаправление и теряет все пост-данные. Как сделать обходной путь, или я делаю что-то неправильно?

Действие здесь:

[FacebookAuthorize] 
    [HttpPost] 
    public async Task<ActionResult> Search(string friendName, FacebookContext context) 
    { 
     return null; 
    } 

Когда я устанавливаю точку останова внутри, я могу видеть, что параметр friendName пуст.

+0

Почему вам нужно POST по д пути? Хотя вам, возможно, придется написать собственное связующее устройство и получить доступ к значениям, если у вас есть какое-то конкретное требование для замены GET с помощью POST –

+0

@KD Мне нужен POST, потому что мне нужно включить загрузку изображения. Это был просто нерабочий пример для иллюстрации. – icesar

ответ

4

Я нашел ответ. Ключ состоит в том, чтобы добавить скрытое поле с именем «signed_request» и заполнить его тем же значением из запроса:

vm.signed_request = Request ["signed_request"];

Почему это так? Вот ответ: https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/Microsoft.AspNet.Mvc.Facebook/Authorization/FacebookAuthorizeFilter.cs

FacebookAuthorizeFilter проверяет это конкретное поле и делает перенаправление, если поле не заполнено.

Я описал его дальше здесь и представил полезный помощник Html для этой цели: My blog post

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

  • Нет связанных вопросов^_^