c# - 从本地开发站点使用 Facebook 进行身份验证

标签 c# facebook facebook-c#-sdk

我正在尝试添加从我正在开发的网站发布到用户墙上的功能。

我已经使用 Microsoft C# Facebook SDK 编写了一些代码。它检查当前用户是否通过身份验证,如果没有,则重定向到 OAuth 页面。如果用户通过身份验证,它会尝试发布到他们的墙上:

CanvasAuthorizer auth = new CanvasAuthorizer();

bool authorized = auth.FacebookWebRequest.IsAuthorized(new string[] { "publish_stream" });

if (authorized)
{

    FacebookClient client = new FacebookClient();

    client.AccessToken = auth.FacebookWebRequest.AccessToken;

    Dictionary<string, object> args = new Dictionary<string, object>();

    args["message"] = "This is a test.";
    args["name"] = "";
    args["link"] = "http://subdomain.domain.lom/";
    args["description"] = "Development site.";

    client.Post("/me/feed", args);

}
else
{

    long appId = {APP_ID};
    string returnUrl = "http://subdomain.domain.com/share";

    Response.Redirect("https://www.facebook.com/dialog/oauth?client_id=" + appId.ToString() + "&redirect_uri=" + returnUrl + "&scope=publish_stream");

}

第一次加载时,它发现您未通过身份验证并将您重定向到 Facebook 授权页面。

但是,当它试图返回我的站点时,它会进入重定向循环。

看起来发生的事情是,当它从 Facebook 返回时,它会进行身份验证检查,但它说用户未经过身份验证。这然后再次重定向到 Facebook 登录,它知道用户已通过身份验证,因此返回到我的站点,导致循环。

我现在正在我的本地机器上开发,http://subdomain.domain.lom/ ,这是无法从外部世界访问的。

我的 Facebook 应用程序设置是:

我的印象是,如果您在本地工作并不重要?

最佳答案

沙盒模式

我建议创建第二个 Facebook 应用程序(根据 Facebook 应用程序 ID),以便在沙盒模式下进行开发和测试。

通过测试应用程序,您可以对有限数量的用户使用不同设置的相同代码(非常有用)。

以下是一些链接:

  1. Application Security来自 Facebook 文档。
  2. How do you limit a Facebook app to a small number of people during testing?来自 stackoverflow.com。

可能的错误

尝试对 returnUrl 值进行编码。

它不会工作,你必须调试它:(。我的第一个客人是 Facebook 授权你使用另一个域。

关于c# - 从本地开发站点使用 Facebook 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280463/

相关文章:

c# - 如何仅终止本地计​​算机的远程桌面 session

c# - 如何在c#中将可选参数方法转换为委托(delegate)

IOS导入错误

python - 如何在 django-allauth 社交帐户注册流程中显示自定义表单

javascript - Facebook 本地开发不起作用

javascript - Facebook 应用 Canvas 调整大小

Facebook Javascript SDK 本地主机错误消息

javascript - 将 Moment.js 应用于我的 C# 循环中的日期

c# - 暂时禁用关闭按钮

asp.net - Facebook Credits 与 C# SDK