我有一个 iFrame Facebook 应用程序。我正在使用 Facebook C# SDK、Facebook
和 Facebook.Web
库。
当用户第一次访问我的应用程序时,我会在 page_load()
上创建一个 FacebookApp
对象。如果 app.Session
为空,我创建一个 CavasAuthorizer(app)
然后调用 Authorize()
。
两个问题:
首先,通过调用 Authorize
生成的重定向 URL 会导致 Facebook 出现错误的“next”参数。说“下一个”参数不属于应用程序。它看起来像这样:
next=http://localhost:4002/facebookredirect.axd/mygame_dev/mygame.aspx
我可以在 CanvasURLBuilder
中编辑代码,使下一个看起来像这样:
next=http://localhost:4002/mygame.aspx
此时,如果我将 URL 剪切并粘贴到浏览器中,该 URL 就可以工作,但它会把我带到第二个问题上。
当代码运行时,用户会看到一个几乎是空白的页面,其中包含一个中等大小的 Facebook 图片和一个“转到 Facebook”的链接。当用户点击链接时,它会将用户带到我的应用程序的正确授权页面。
我觉得这是两个可能相关但又可能独立的问题。
如有任何帮助,我们将不胜感激。
-安迪
最佳答案
对于第一个问题
确保应用程序配置页面中的站点 Url 设置为 http://apps.facebook.com/ [你的应用]/
对于第二个问题。
当您未被授权时,您将被重定向到登录 url,但您不能从您的 iframe 执行此操作,因为它会重定向 iframe,您将在 facebook 中获得一个 Facebook。
您应该使用 window.top.location = ...
来重定向父窗口。
编辑
当使用 SDK 的 Mvc 部分时,Facebook C# SDK 已经为您完成了这项工作。由于您使用的是网络表单,因此您应该使用等效的代码。
protected void Page_Load(object sender, EventArgs e)
{
var fb = new FacebookApp();
var auth = new CanvasAuthorizer(fb);
if (!auth.IsAuthorized())
{
var url = auth.GetLoginUrl(new HttpRequestWrapper(Request));
var content = CanvasUrlBuilder.GetCanvasRedirectHtml(url);
Response.ContentType = "text/html";
Response.Write(content);
Response.End();
return;
}
//...Go on if authorized
}
关于c# - Facebook C# SDK授权问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262413/