Как загрузить изображение из контроллера ASP.NET MVC в приложении Facebook Canvas? - PullRequest
0 голосов
/ 03 апреля 2011

В моем приложении Facebook для холста я хочу загрузить изображение из моего контроллера ASP.NET MVC.Итак, я делаю что-то вроде этого в моем контроллере (упрощенно):

public ActionResult GetImage(int id)
{
  // ....
  return File(@"c:\temp\1.jpg", "image/jpeg");
}

И он вызывается из моей страницы aspx так:

<img src="/Home/GetImage?id=20" alt="Test"/>

Но изображение не отображается, яполучить «красный х».

Итак, я запускаю Fiddler и вижу, что запрос действительно возвращает изображение, но данные предварительно добавляются с фреймом Facebook html:

<html><head><script type="text/javascript"> top.location = "http://www.facebook.com/dialog/oauth/?state=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&client_id=xxxxxxxxxxxxxxx&redirect_uri=http://localhost:5000/facebookredirect.axd"; </script></head><body></body></html>?????JFIF??H?H???? ?ICC_PROFILE??? ????????mntrRGB XYZ ?????$?acsp???????????????????????????????????

Что, конечно, не является vaild данными изображения jpeg.

Как можно избежать этих предварительно дополненных данных?

1 Ответ

0 голосов
/ 04 апреля 2011

Не берите в голову, я обнаружил, что данные Sign_Request (все же снова) отсутствуют.

Я думал, что единственный способ передать это через HTTP-заголовок, но (как по волшебству) я мог передать еготакже как параметр, вызывающий проверку запроса.

<img src="/Home/GetImage?id=20&signed_request=<%=Request.Params["signed_request"] %>" />

public ActionResult GetImage(int id), string signed_request)
{ 
  var auth = new CanvasAuthorizer(); 
  if (auth.Authorize()) 
  { 
    // Indeed, I'm now authorized 
    return File(@"c:\temp\1.jpg", "image/jpeg");
  }
   /// ... 
}

/ M

...