C# 初始化FacebookClient时内容页出错

C# 初始化FacebookClient时内容页出错,c#,facebook-c#-sdk,C#,Facebook C# Sdk,我在MasterPage Facebook应用程序的ContentPage中收到一个错误“对象引用未设置为对象的实例” Site.master.cs public FacebookSession CurrentSession { get { return (new CanvasAuthorizer()).Session; } } protected void Page_Load(object sender, EventArgs e) { var auth = new C

我在MasterPage Facebook应用程序的ContentPage中收到一个错误“对象引用未设置为对象的实例”

Site.master.cs

public FacebookSession CurrentSession
{
    get { return (new CanvasAuthorizer()).Session; }
}

protected void Page_Load(object sender, EventArgs e)
{
        var auth = new CanvasAuthorizer { Perms = "email,read_stream,publish_stream,offline_access,user_about_me" };
        if (auth.Authorize())
        {
            ShowFacebookContent();
        }
}

private void ShowFacebookContent()
{
    var fb = new FacebookClient(this.CurrentSession.AccessToken);
    dynamic myInfo = fb.Get("me");
    lblName.Text = myInfo.name;
    imgProfile.ImageUrl = "https://graph.facebook.com/" + myInfo.id + "/picture";
    lblBirthday.Text = myInfo.birthday;
    pnlHello.Visible = true;
}
SiteMaster myMasterPage;

protected void Page_Load(object sender, EventArgs e)
{
    myMasterPage = this.Page.Master as SiteMaster;
}
public void LinkButton1_Click(object sender, EventArgs e)
{
    var fb = new FacebookClient(this.myMasterPage.CurrentSession.AccessToken);

    dynamic feedparameters = new ExpandoObject();
    feedparameters.message = (message_txt.Text == null ? " " : message_txt.Text);
    feedparameters.user_message_prompt = "userPrompt";

    /*Dictionary<string, object> feedparameters = new Dictionary<string, object>();

    feedparameters.Add("message", "Testing Application");
    feedparameters.Add("user_message_prompt", "Post To Your Wall");
    feedparameters.Add("display", "iframe");*/

    dynamic result = fb.Post("me/feed", feedparameters);
}
此母版页正常工作并显示用户名和配置文件

Default.aspx.cs

public FacebookSession CurrentSession
{
    get { return (new CanvasAuthorizer()).Session; }
}

protected void Page_Load(object sender, EventArgs e)
{
        var auth = new CanvasAuthorizer { Perms = "email,read_stream,publish_stream,offline_access,user_about_me" };
        if (auth.Authorize())
        {
            ShowFacebookContent();
        }
}

private void ShowFacebookContent()
{
    var fb = new FacebookClient(this.CurrentSession.AccessToken);
    dynamic myInfo = fb.Get("me");
    lblName.Text = myInfo.name;
    imgProfile.ImageUrl = "https://graph.facebook.com/" + myInfo.id + "/picture";
    lblBirthday.Text = myInfo.birthday;
    pnlHello.Visible = true;
}
SiteMaster myMasterPage;

protected void Page_Load(object sender, EventArgs e)
{
    myMasterPage = this.Page.Master as SiteMaster;
}
public void LinkButton1_Click(object sender, EventArgs e)
{
    var fb = new FacebookClient(this.myMasterPage.CurrentSession.AccessToken);

    dynamic feedparameters = new ExpandoObject();
    feedparameters.message = (message_txt.Text == null ? " " : message_txt.Text);
    feedparameters.user_message_prompt = "userPrompt";

    /*Dictionary<string, object> feedparameters = new Dictionary<string, object>();

    feedparameters.Add("message", "Testing Application");
    feedparameters.Add("user_message_prompt", "Post To Your Wall");
    feedparameters.Add("display", "iframe");*/

    dynamic result = fb.Post("me/feed", feedparameters);
}
SiteMaster我的主页;
受保护的无效页面加载(对象发送方、事件参数e)
{
myMasterPage=this.Page.Master作为SiteMaster;
}
public void LinkButton1\u单击(对象发送者,事件参数e)
{
var fb=新的FacebookClient(this.myMasterPage.CurrentSession.AccessToken);
动态feedparameters=新的ExpandooObject();
feedparameters.message=(message_txt.Text==null?“:message_txt.Text);
feedparameters.user\u message\u prompt=“userPrompt”;
/*Dictionary feedparameters=新字典();
添加(“消息”、“测试应用程序”);
feedparameters.Add(“用户\消息\提示”,“张贴到墙上”);
添加(“显示”、“iframe”)*/
动态结果=fb.Post(“me/feed”,feedparameters);
}
即使这个页面加载正常,但当我尝试使用LinkButton发布时,问题出现了。 下面的行给出了错误

var fb=new FacebookClient(this.myMasterPage.CurrentSession.AccessToken)

单击链接按钮时,对象引用未设置为对象的实例


我将非常感谢您的帮助。

我们终于找到了问题所在。需要添加一个隐藏字段

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

我认为,无论是在文档中还是在提供的样本中,都没有提到这一点