访问Facebook C#SDK中的ASP.Net Session变量

时间:2011-03-18 07:10:20

标签: asp.net facebook facebook-c#-sdk

我的ASP.Net HTML 5应用程序,在Session中有图像字节数组, 我正在使用CodePlex的最新5.X C#facebook SDK。

但是当用户被授权并且当时回到我的画布页面时,我无法访问我的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

2 个答案:

答案 0 :(得分:2)

试试这个:

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

    if (!Page.IsPostBack)
    {

    }
}

答案 1 :(得分:0)

我最近发现需要以下隐藏字段才能正常运行。

请留意你拥有它。

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

Link to my Question