C# 将信息从网站发布到Facebook墙

C# 将信息从网站发布到Facebook墙,c#,asp.net,facebook,facebook-graph-api,C#,Asp.net,Facebook,Facebook Graph Api,我有一个用ASP.NET webform.NET 4.5 C#制作的网站。本网站包含一个论坛(由我自制),该论坛的部分内容需要发布到特定的facebook墙上(为该网页制作)。我需要的是: 帖子刚从论坛的特定部分创建了帖子(消息)到相应的facebook墙 可选:将网页上的论坛线程与特定facebook页面上的消息/评论同步 我看过这些指南: 但我不确定这真的是我的解决方案?我试着按照指南去做,但看起来不一样 编辑: dynamic result; //https://dev

我有一个用ASP.NET webform.NET 4.5 C#制作的网站。本网站包含一个论坛(由我自制),该论坛的部分内容需要发布到特定的facebook墙上(为该网页制作)。我需要的是:

  • 帖子刚从论坛的特定部分创建了帖子(消息)到相应的facebook墙

  • 可选:将网页上的论坛线程与特定facebook页面上的消息/评论同步

  • 我看过这些指南:

    但我不确定这真的是我的解决方案?我试着按照指南去做,但看起来不一样

    编辑:

    dynamic result;
    
            //https://developers.facebook.com/tools/explorer/
            //https://developers.facebook.com/tools/access_token/
            FacebookClient client = new FacebookClient(ConfigurationManager.AppSettings["FacebookAppToken"]);
    
            //result = client.Get("debug_token", new
            //{
            //    input_token = ConfigurationManager.AppSettings["FacebookAppToken"],
            //    access_token = ConfigurationManager.AppSettings["FacebookAppToken"]
            //});
    
    
            //result = client.Get("oauth/access_token", new
            //    {
            //        client_id = ConfigurationManager.AppSettings["FacebookAppId"],
            //        client_secret = ConfigurationManager.AppSettings["FacebookAppSecret"],
            //        grant_type = "client_credentials",
            //        //redirect_uri = "http://www.MyDomain.net/",
            //        //code = ""
            //    });
    
            result = client.Get("oauth/access_token", new
            {
                client_id = ConfigurationManager.AppSettings["FacebookAppId"],
                client_secret = ConfigurationManager.AppSettings["FacebookAppSecret"],
                grant_type = "client_credentials"
            });
            client.AccessToken = result.access_token;
    
            result = client.Post("[IdOfFacebookPage]/feed", new { message = "Test Message from app" });
            //result.id;
            result = client.Get("[IdOfFacebookPage]");
    
            return false;
    

    发布到facebook墙的方法:

  • 你需要在facebook开发者工具中注册
  • 创建应用程序(填写表单)
  • 下载FGT 5.0.480(Facebook图形工具包)
  • 在web应用程序中引用FGT DLL
  • FGT有方法发布到facebook墙,但需要appId
  • 使用在步骤2中创建的应用程序的应用程序id
  • 要通过facebook向用户留言,只能通过应用程序

    尝试此asp.net应用程序,它将允许您在墙上发布:

    这将允许你设想你需要什么

    您的应用程序获取一个appId,您需要使用该appId生成身份验证令牌

    限制:你想发布的用户墙应该已经添加了在第2步创建的应用,这是强制性的,没有解决办法

    当用户第一次访问该应用程序时,它会自动请求权限发布到墙-->用户需要接受它

    希望这能给你一个关于如何做这件事的想法

    然后,您可以张贴到用户的墙上

    对于Banshee使用Facebook SDK For.NET的以下请求:

    用户id-facebook用户id,用于发布消息的墙

    此用户应已添加您在步骤1中创建的应用,否则将显示未经授权的访问

    dynamic messagePost = new ExpandoObject();
    messagePost.picture = "http://www.stackoverflow.com/test.png";
    messagePost.link = "http://www.stackoverflow.com";
    messagePost.name = "This is a test name";
    
    messagePost.caption = "CAPTION 1";
    messagePost.description = "Test desc";
    messagePost.message = "message"
    
    var fb = new FacebookClient();
    dynamic result = fb.Get("oauth/access_token", new { 
    client_id     = "app_id", 
    client_secret = "app_secret", 
    grant_type    = "client_credentials" 
    });
    fb.AccessToken = result.access_token;    
    
    try
    {
     var postId = fb.Post(userId + "/feed", messagePost);
    }
    catch (FacebookOAuthException ex)
    {
      //handle oauth exception
    }
    catch (FacebookApiException ex)
    {
      //handle facebook exception
    }
    
    您需要一个扩展令牌才能发布到墙。。女妖很好地解释了获得扩展令牌的步骤

    编辑:如何通过女妖获得扩展令牌:
    请按照此方法在facebook墙上发布:

  • 你需要在facebook开发者工具中注册
  • 创建应用程序(填写表单)
  • 下载FGT 5.0.480(Facebook图形工具包)
  • 在web应用程序中引用FGT DLL
  • FGT有方法发布到facebook墙,但需要appId
  • 使用在步骤2中创建的应用程序的应用程序id
  • 要通过facebook向用户留言,只能通过应用程序

    尝试此asp.net应用程序,它将允许您在墙上发布:

    这将允许你设想你需要什么

    您的应用程序获取一个appId,您需要使用该appId生成身份验证令牌

    限制:你想发布的用户墙应该已经添加了在第2步创建的应用,这是强制性的,没有解决办法

    当用户第一次访问该应用程序时,它会自动请求权限发布到墙-->用户需要接受它

    希望这能给你一个关于如何做这件事的想法

    然后,您可以张贴到用户的墙上

    对于Banshee使用Facebook SDK For.NET的以下请求:

    用户id-facebook用户id,用于发布消息的墙

    此用户应已添加您在步骤1中创建的应用,否则将显示未经授权的访问

    dynamic messagePost = new ExpandoObject();
    messagePost.picture = "http://www.stackoverflow.com/test.png";
    messagePost.link = "http://www.stackoverflow.com";
    messagePost.name = "This is a test name";
    
    messagePost.caption = "CAPTION 1";
    messagePost.description = "Test desc";
    messagePost.message = "message"
    
    var fb = new FacebookClient();
    dynamic result = fb.Get("oauth/access_token", new { 
    client_id     = "app_id", 
    client_secret = "app_secret", 
    grant_type    = "client_credentials" 
    });
    fb.AccessToken = result.access_token;    
    
    try
    {
     var postId = fb.Post(userId + "/feed", messagePost);
    }
    catch (FacebookOAuthException ex)
    {
      //handle oauth exception
    }
    catch (FacebookApiException ex)
    {
      //handle facebook exception
    }
    
    您需要一个扩展令牌才能发布到墙。。女妖很好地解释了获得扩展令牌的步骤

    编辑:如何通过女妖获得扩展令牌:
    请遵循这一点,创建一个扩展页面标记,并使用它使文章一切正常。见此:


    我很惊讶这个简单的任务很难运行,而且几乎没有什么帮助。

    通过创建一个扩展页面标记,并使用它使文章一切正常。见此:


    我很惊讶这个简单的任务很难运行,而且几乎没有什么帮助。

    这些链接使用不同的库。你用的是哪一个?。FacebookC#SDK()将为您提供所需功能。我现在不使用任何库,但我正在寻找最简单、最好的方法。我将访问facebooksdk.net。如果你有一个关于如何做我需要的事情的指南,那就更好了。IMO Facebook C#SDK是一个不错的选择,它易于使用,并为你提供了所需的API。此页面提供了如何获取/发布Facebook数据的示例:?@Slartibartfast我需要在我的网站内完成所有操作,无需登录表单等等。当用户在我的网站上发布消息时,我需要将它们发布在我的facebook页面上,用户不必做任何事情来实现这一点。这些链接使用不同的库。你用的是哪一个?。FacebookC#SDK()将为您提供所需功能。我现在不使用任何库,但我正在寻找最简单、最好的方法。我将访问facebooksdk.net。如果你有一个关于如何做我需要的事情的指南,那就更好了。IMO Facebook C#SDK是一个不错的选择,它易于使用,并为你提供了所需的API。此页面提供了如何获取/发布Facebook数据的示例:?@Slartibartfast我需要在我的网站内完成所有操作,无需登录表单等等。当用户在我的网站上发布消息时,我需要将它们发布在我的facebook页面上,用户不必做任何事情来实现这一点。为什么不使用facebook SDK.NET呢?我已经实现了一些Facebook SDK.NET代码,但问题是我没有权限发布到网站Facebook页面?嘿,Banshee,我已经编辑了下面的答案。请尝试并让我知道您是否能够实现此操作。谢谢,但没有,相同的例外:附加信息:(OAutheException-#200)(#200)用户尚未授权应用程序执行此操作。我确信我运行的代码与您建议的相同。你测试过代码了吗?如果是的话