我已经在我的FB应用程序上设置了SDK,但是在我的生活中无法解决重定向发生的原因。
应用程序是一个IFrame所以,为了测试,我有两个页面,第一页是第二页的链接,当我点击链接时整个页面重定向而不是IFrame src重定向。
两个页面都在检查用户是否使用以下代码登录..
protected string requiredAppPermissions = "user_about_me,email";
protected FacebookApp fbApp;
protected CanvasAuthorizer authorizer;
protected void Page_Load(object sender, EventArgs e)
{
fbApp = new FacebookApp();
authorizer = new CanvasAuthorizer(fbApp);
authorizer.Perms = requiredAppPermissions;
if (authorizer.Authorize())
{
}
}
我看过源代码,可以在FacebookAppRedirectHttpHandler中看到这个,我只是不明白你为什么要继续为每个导航链接重定向整页?
答案 0 :(得分:0)
最重要的原因是Facebook会在每次请求时将身份验证传递给signed_request。它可以通过正文中的POST或查询字符串中的GET来执行此操作。我们这样做的原因是因为cookie不是100%可靠。如果我们在iframe中重定向,我们必须将用户的会话存储在cookie中。某些浏览器(包括safari)不允许iframe应用创建Cookie。有很多方法,但对于大多数人来说,我们拥有它的方式效果最好。如果您想在iframe内部进行重定向而不更改顶部网址,则必须以某种方式保存会话并将其传递到第二页。您可以通过将其添加到查询字符串(复杂)或将其存储在会话中(不是很可扩展)或使用cookie(不可靠)来完成此操作。