具有母版页的iframe Canvas应用程序

时间:2011-03-18 20:49:33

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

我正在开发一个Iframe-Canvas应用程序。

我正在使用母版页获取权限访问权限显示一些细节,这很好。

然后在内容页面上我想显示一个文本框& linkbutton所以用户可以在他们的墙上发布状态&我在这里得到错误

(OAuthException)必须使用活动访问令牌来查询有关当前用户的信息。

这是我的代码:

Site.master.cs

protected void Page_Load(object sender, EventArgs e)
{
    var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me","user_birthday","user_location","offline_access","publish_stream" } };

    if (auth.Authorize())
    {
        ShowFacebookContent();
    }
}
private void ShowFacebookContent()
{
    var fb = new FacebookWebClient();
    dynamic myInfo = fb.Get("me");
    lblName.Text = myInfo.name;
    imgProfile.ImageUrl = "https://graph.facebook.com/" + myInfo.id + "/picture";
    lblBirthday.Text = (myInfo.birthday == null ? string.Empty : DateTime.Parse(myInfo.birthday).ToString("dd-MMM-yy"));
    lblHometown.Text = (myInfo.hometown.name == null ? string.Empty : myInfo.hometown.name);
    lblLocation.Text = (myInfo.location.name == null ? string.Empty : myInfo.location.name);
    pnlHello.Visible = true;
}

Default.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{

}

public void LinkButton1_Click(object sender, EventArgs e)
{
    var fb = new FacebookClient("access_token");
    //var fb = new FacebookWebClient();

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

    dynamic result = fb.Post("me/feed", feedparameters);
}

我对FacebookSDK很新,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

Wel终于找到了问题所在。需要添加隐藏字段。

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

我认为在文档和提供的样本中都没有提及任何内容。

答案 1 :(得分:0)

您不应该将“access_token”作为字符串值传递。您需要了解建立用户会话时Facebook提供给您的实际access_token值,然后将该access_token值传递给构造函数。

查看this question了解详情。