我正在构建一个简单的FB应用程序但是我遇到了一个奇怪的错误。我有两个页面:Default.aspx和Test.aspx。在Default.aspx中,我有以下内容:
var auth = new CanvasAuthorizer
{
Permissions = new[] { "user_about_me", "email" },
CancelUrlPath = "xxxxxxxxxxxxxxx",
ReturnUrlPath = "xxxxxxxxxxxxxx"
};
if (!FacebookWebContext.Current.IsAuthorized())
{
LitMsg.Text = "You must give permissions to this application";
}
else
{
if (auth.Authorize())
{
// Token
LitToken.Text = FacebookWebContext.Current.AccessToken;
}
}
然后按一个按钮导航到第二页:
protected void LbStart_Click(object sender, EventArgs e)
{
Response.Redirect("Test.aspx");
}
在第一页上一切正常。如果用户从未允许应用程序访问这些权限,则会显示权限对话框。问题出在第二页。我本来希望能够访问FacebookWebContext中的访问令牌,但是:
FacebookWebContext.Current.AccessToken
当我登陆第二页时,是空的。
为什么?导航到第二页后,如何访问访问令牌?
提前致谢!
答案 0 :(得分:0)
锚标记更易于导航。并确保使用target =“_ top”
<a href="http://apps.facebook.com/a/test.aspx" target="_top" />
导航需要位于最顶层的iframe中。如果您仍想使用按钮,请确保手动传递signed_request的值。如果您想知道如何传递已签名的请求,请参阅Problem when posting back to mvc 3.0 facebook app。
如果您在签署请求后仍然导航,您仍然会丢失功能,例如url是相同的,这对于书签来说是不好的。所以首选的方法是使用锚标签。