0

내 모바일 웹 사이트에서 사용자가 AppRequest를 Facebook 친구에게 보낼 수 있습니다. 이것은 작동 중입니다.ASP.Net MVC 4에서 Facebook AppRequests 라우팅

친구가 AppRequest를 허용하면 Facebook에서 친구를 내 웹 사이트로 보냅니다. 이것 역시 효과적입니다.

내 웹 사이트는 ASP.Net MVC 4 응용 프로그램입니다. 들어오는 AppRequest 수락을 인식하도록 내 경로를 얻으려고하고 있지만 어떻게해야하는지 알 수 없습니다.

페이스 북은이 URL을 사용하여 내 사이트에 친구를 보내는 : 사용자 정의 컨트롤러와 액션에 대한 경로를 매핑하는 나의 시도에도 불구하고

http://www.example.com/?ref=notif&code=abcdefg&fb_source=notification

이 집/인덱스로 라우팅지고 계속 .

등록 경로 :

routes.MapRoute(
    name: "FacebookAppRequest", 
    url: "{ref}/{code}/{fb_source}", //This should match the URL above 
    defaults: new { controller = "Facebook", action ="FBAppRequestHandler"} 
); 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

컨트롤러 :

public class FacebookController : Controller 
{ 
    public FacebookController() {} 

    public ActionResult FBAppRequestHandler(
     [Bind(Prefix = "ref")] string fbReferal, 
     [Bind(Prefix = "code")] string fbCode, 
     [Bind(Prefix = "fb_source")] string fbSource) 
    { 
     //Do some stuff with fbReferal, fbCode and fbSource 

     return View(); 
    } 

답변

1

refcodefb_source이 전달됩니다 여기에 지금까지 일을하지 못한 것을 한 일이다 쿼리 문자열 매개 변수로 그들은 길의 일부가 아닙니다. 따라서 {ref}/{code}/{fb_source}이 (가) 귀하의 맞춤 경로와 일치 할 것이라고는 예상 할 수 없습니다. 요청이 그처럼 보였다 경우 그 사건이었을 것입니다 : 실제 경로는 다음과 같습니다 때문에 (쿼리 문자열 매개 변수에 대해 잊지 - 그들이 라우팅에 사용되지 않음)

http://www.example.com/notif/abcdefg/notification 

: 모든

http://www.example.com/ 

기본적으로 여기에있는 URL은 /입니다. 그래서 여기에 희망을 수있는 최선 원하는 컨트롤러로 경로 있도록 기본 경로를 수정하는 것입니다 :

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Facebook", action = "FBAppRequestHandler", id = UrlParameter.Optional } 
); 

지금 첫 번째 경로 제거 - 그것은 필요는 없습니다.