【问题标题】:AccessToken empty in FacebookWebContextFacebookWebContext 中的 AccessToken 为空
【发布时间】:2011-09-16 21:56:03
【问题描述】:

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

当我进入第二页时是空的。

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

提前致谢!

【问题讨论】:

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


    【解决方案1】:

    锚标签更容易导航。并确保使用 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 相同的功能,这不利于书签。所以首选的方法是使用锚标签。

    【讨论】:

    • 谢谢,我仍然不确定如何手动传递 signed_request 的值。我补充说: " /> ... 到我的页面 Default.aspx 和 Test.aspx。另外,我应该补充一点,这个应用程序正在一个选项卡中运行(当人们转到apps.facebook.com/appname 时,我将添加一个 aspx 页面)......我还应该做什么?我有点困惑。
    猜你喜欢
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2021-05-30
    • 2016-08-30
    相关资源
    最近更新 更多