C# 初始化FacebookClient时内容页出错
我在MasterPage Facebook应用程序的ContentPage中收到一个错误“对象引用未设置为对象的实例” Site.master.csC# 初始化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
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"]%>"/>
我认为,无论是在文档中还是在提供的样本中,都没有提到这一点