FacebookWebContext中的AccessToken为空

时间:2011-09-12 16:39:19

标签: facebook-c#-sdk access-token

我正在构建一个简单的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
当我登陆第二页时,

是空的。

为什么?导航到第二页后,如何访问访问令牌?

提前致谢!

1 个答案:

答案 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是相同的,这对于书签来说是不好的。所以首选的方法是使用锚标签。