1

我正在构建一个简单的 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

当我登陆第二页时是空的。

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

提前致谢!

4

1 回答 1

0

锚标记更易于导航。并确保使用 target="_top"

<a href="http://apps.facebook.com/a/test.aspx" target="_top" />

导航需要位于最外层的 iframe 中。如果您仍然想使用按钮,请确保手动传递 signed_request 的值。如果您想知道如何传递已签名的请求,请参阅发回 mvc 3.0 facebook 应用程序时出现的问题。

如果您即使在发出签名请求后仍然导航,您仍然会丢失诸如 url 相同的功能,这对书签不利。所以首选的方法是使用锚标签。

于 2011-09-16T13:56:03.280 回答