c# - Facebook C# SDK授权问题

标签 c# facebook facebook-c#-sdk

我有一个 iFrame Facebook 应用程序。我正在使用 Facebook C# SDK、FacebookFacebook.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/ [你的应用]/

alt text

对于第二个问题。

当您未被授权时,您将被重定向到登录 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/

相关文章:

c# - 如何在 C# 中获取计划任务的历史记录?

c# - 将 specflow 表转换为字典

c# - ASP.Net上的jpegoptim- “error opening temporary file”

ios - Facebook 代表在身份验证后未调用 : cocos2d

java - Facebook Account-Kit + React.js + Spring boot

c# - 获取永久 Facebook 访问 token

c# - Silverlight 中的请求对话框

javascript - 对所有用户使用 Office 365 身份验证

ios - Facebook iOS SDK 3.5 的 NSJSONSerialization 崩溃

facebook - 在 Facebook API 中获取事件邀请者