1

방금 ​​새로운 Facebook 앨범 앱을 만들었습니다. 내 앱에서 "게시물"을 처리하는 컨트롤러 작업과 [FacebookAuthorize] 필터 작동시를 제외하고는 모두 정상적으로 작동합니다. 리디렉션을 생성하고 모든 양식 데이터가 손실되기 때문입니다. 내가 폼의 방법을 변경하는 경우ASPNET MVC4 Facebook 앱 - FacebookAuthorize 필터 및 데이터 게시

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 필터가 리다이렉트를 만들고 모든 사후 데이터를 잃어버린 것처럼 보인다. 임시 해결책을 만드는 방법, 또는 나는 잘못된 것을하고 있습니까?

액션

은 여기에 있습니다 : 나는 내부에 중단 점을 배치 할 때, 내가 그 매개 변수 FRIENDNAME가 비어 볼 수

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

.

+0

? GET을 POST –

+0

@KD로 대체 할 특정 요구 사항이있는 경우 모델 바인더를 작성하고 값에 액세스해야 할 수도 있지만 이미지 업로드를 사용해야하므로 POST가 필요합니다. 이것은 일러스트레이션을위한 비상업적 인 예였습니다. – icesar

답변

4

답변을 찾았습니다. 핵심은 "signed_request"라는 숨겨진 필드를 추가하고 요청에서 동일한 값으로 채우는 것입니다.

vm.signed_request = 요청 [ "signed_request"];

왜 그렇습니까? 여기에 대답이 있습니다 : https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/Microsoft.AspNet.Mvc.Facebook/Authorization/FacebookAuthorizeFilter.cs

FieldAuthorizeFilter는 필드가 채워져 있지 않으면 특정 필드를 검사하여 리디렉션합니다.

본인은 여기에 설명하고 그 목적을 위해 유용 HTML 헬퍼를 도입했습니다 : 당신은 D 방식으로 POST 필요한 이유 My blog post