C# 从本地开发网站通过Facebook进行身份验证

C# 从本地开发网站通过Facebook进行身份验证,c#,facebook,facebook-c#-sdk,C#,Facebook,Facebook C# Sdk,我正在尝试添加从我正在开发的站点发布到用户墙的功能 我已经使用Microsoft C#Facebook SDK准备了一些代码。它检查当前用户是否经过身份验证,如果没有,则重定向到OAuth页面。如果用户已通过身份验证,它将尝试在其墙上张贴: CanvasAuthorizer auth = new CanvasAuthorizer(); bool authorized = auth.FacebookWebRequest.IsAuthorized(new string[] { "publish_s

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

我已经使用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");

}
CanvasAuthorizer auth=new CanvasAuthorizer();
bool authorized=auth.FacebookWebRequest.IsAuthorized(新字符串[]{“发布流”});
如果(授权)
{
FacebookClient=新的FacebookClient();
client.AccessToken=auth.FacebookWebRequest.AccessToken;
Dictionary args=新字典();
args[“message”]=“这是一个测试。”;
参数[“名称”]=“”;
参数[“链接”]=“http://subdomain.domain.lom/";
args[“description”]=“开发站点。”;
client.Post(“/me/feed”,args);
}
其他的
{
长appId={APP_ID};
字符串returnUrl=”http://subdomain.domain.com/share";
响应。重定向(“https://www.facebook.com/dialog/oauth?client_id=“+appId.ToString()+”&redirect_uri=“+returnUrl+”&scope=publish_stream”);
}
第一次加载时,它会看到您未通过身份验证,并将您重定向到Facebook身份验证页面

然而,当它试图返回到我的站点时,它会进入重定向循环

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

目前我正在本地机器上开发,外部世界无法访问

我的Facebook应用程序设置为:

  • 应用程序域:Domain.lom
  • 网站网址:
我的印象是,无论您是否在本地工作?

沙箱模式 我建议创建第二个Facebook应用程序(就Facebook应用程序id而言),以便在沙箱模式下进行开发和测试

使用测试应用程序,您可以在有限数量的用户上使用相同的代码和不同的设置,这些用户对任何其他人都是隐藏的(非常有用)

以下是一些链接:

  • 来自Facebook文档
  • 来自stackoverflow.com
  • 可能的错误 尝试编码
    returnUrl
    value


    它不起作用,你必须调试它:(.我的第一个客户是Facebook授权你进入另一个域。

    另外一个需要注意的问题是,如果IE没有无限重定向循环,它需要从你的web服务器上查看p3p策略

    请在web.config中查看p3p标题。如果没有,则可以添加一个以使IE满意


    请参见

    您好,谢谢您的评论。我尝试将当前Facebook应用程序更改为沙盒模式,不幸的是,它没有解决我的问题。它仍然没有检测到我已通过身份验证,并将我旋转到重定向循环中。