2011-03-18 55 views
0

我有我的ASP.Net HTML 5应用程序,它具有Session中的图像字节数组, 我使用CodePlex中最新的5.X C#facebook SDK。在Facebook C#SDK中访问ASP.Net会话变量

但是,当用户被授权并回到我的画布页时,我无法访问我的ASP.Net会话,它给我一个空值。

这是我的代码。

CanvasAuthorizer _authorizer = new CanvasAuthorizer { Perms = "publish_stream,offline_access,manage_pages" }; 

    if (!_authorizer.IsAuthorized()) 
    { 

     _authorizer.HttpContext.Session["ImageByte"] = Session["ImageByte"]; 
     // Go for Login, 
     _authorizer.HandleUnauthorizedRequest(); 
    } 
    else 
    { 
     //After Login 
     //Here its give me a null instead of Byte Array(My Image Byte Array). 
     byte[] imageByte = (byte[])(_authorizer.HttpContext.Session["ImageByte"]); 


     var mediaObject = new FacebookMediaObject 
     { 
      FileName = "sample.png", 
      ContentType = "image/png" 
     }; 


     mediaObject.SetValue(imageByte); 

     dynamic parameters = new ExpandoObject(); 
     parameters.source = mediaObject; 

     parameters.uid = _authorizer.Session.UserId; 


     var fb = new FacebookClient(Facebook.FacebookContext.Current.AppId, Facebook.FacebookContext.Current.AppSecret); 


     parameters.access_token = _authorizer.Session.AccessToken; 



     string path = "/me/photos"; 
     dynamic param = new ExpandoObject(); 
     param.access_token = _authorizer.Session.AccessToken; 
     param.uid = _authorizer.Session.UserId; 

     param.source = mediaObject; 
     dynamic result = fb.Post(path, param); 

现在请给我一些建议,我在哪里失踪,我如何访问我的应用程序会话。 谢谢, Jigar Shah

+0

究竟是什么空? '_authorizer.Session','_authorizer.HttpContext.Session','imageByte'还是什么?更加详细一些。 – 2011-03-18 12:35:44

回答

0

我最近发现下面的隐藏字段是正确运行所必需的。

请让你拥有它。

<input type="hidden" name="signed_request" value="<%: Request.Params["signed_request"]%>"/> 

Link to my Question

2

试试这个:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.AppendHeader("P3P", "CP=\"CAO PSA OUR\""); 

    if (!Page.IsPostBack) 
    { 

    } 
}