我正在使用工具包的 build 5.06,我才刚刚开始,尝试做一些简单的事情:让回发工作。但是,当用户单击回发按钮时,浏览器会快速重定向到某个内容(我认为是 uiserver.???),然后再次重定向到 facebookredirect.axd,最后再次重定向到我的主页画布页面。所以,整个会话几乎被重置了。我希望我遗漏了一些明显的东西(比如我不应该在回发时调用授权?)。这是我的代码:
使用系统;
使用系统配置;
使用 System.Web.UI;
使用脸书;
使用 Facebook.Web;
公共部分类 _Default :页面
{
/// <summary>
/// Gets the current canvas facebook session.
/// </summary>
public FacebookSession CurrentSession
{
get { return (new CanvasAuthorizer()).Session; }
}
protected void Page_Load(object sender, EventArgs e)
{
var auth = new CanvasAuthorizer { Permissions = new[] { "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;
lblName.Text += myInfo.gender;
pnlHello.Visible = true;
}
protected void TempSaveButton_Click(object sender, EventArgs e)
{
var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me" } };
if (auth.Authorize())
{
var fb = new FacebookClient(this.CurrentSession.AccessToken);
dynamic myInfo = fb.Get("me");
lblDisplayText.Text = "Was authorized! name is" + myInfo.name;
}
else
{
lblDisplayText.Text = "Was not authorized!";
}
}
}
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Label runat="server" ID="a" />
<asp:Panel ID="pnlHello" runat="server" Visible="false"> </asp:Panel>
<h2>
Hello
<asp:Label ID="lblName" runat="server" />!
</h2>
<div>Hello ! Please press button to do postback.
<asp:Button ID="TempSaveButton" Text="Temp Save" runat="server" onclick="TempSaveButton_Click"></asp:button>
<asp:Panel ID="pnlError" runat="server" Visible="false">
<a href="Default.aspx">
<asp:Label ID="lblDisplayText" runat="server" ForeColor="Red" /><br />
</a>
</asp:Panel>
(在上面,回发后根本没有设置标签。
谢谢你的帮助...
-Ben
您需要为回发和ajax 请求手动维护signed_request。
尝试创建一个包含signed_request 的隐藏输入字段。
<input type="hidden" name="signed_request" value="<%: Request.Params["signed_request"]%>"/>
将隐藏字段命名为signed_request。因此,当您键入以下代码时,access_token 会自动设置。
var fb = new FacebookWebClient();
对于 mvc 有一个辅助方法。
@Html.FacebookSignedRequest()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)