从网站发布消息到Facebook墙

时间:2014-05-04 18:15:31

标签: c# asp.net facebook facebook-graph-api

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

  1. 从论坛的特定部分发布刚创建的帖子(消息)到相应的Facebook墙。

  2. 可选:将网页上的论坛帖子与特定Facebook页面上的消息/评论同步

  3. 我看过这些指南: http://www.codeproject.com/Articles/569920/Publish-a-post-on-Facebook-wall-using-Graph-API http://www.c-sharpcorner.com/UploadFile/raj1979/post-on-facebook-users-wall-using-Asp-Net-C-Sharp/

    但我不确定这对我来说真的是解决方案吗?我试图按照指南,但看起来不一样。

    编辑:

    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;
    

2 个答案:

答案 0 :(得分:3)

发布到Facebook墙的方法:

  1. 您需要在facebook开发者工具中注册。
  2. 创建应用(填写表单)。
  3. 下载FGT 5.0.480(Facebook图形工具包)
  4. 在您的网络应用程序中引用FGT dll。
  5. FGT有方法发布到Facebook墙,但需要appId。
  6. 使用在步骤2中创建的应用的应用ID。
  7. 通过Facebook发布到用户的墙上,只能通过应用程序发布。

    试试这个asp .net应用程序,它可以让你发布在你的墙上: https://apps.facebook.com/aspdotnetsample/?fb_source=search&ref=br_tf

    这样您就可以设想自己需要的东西。

    您的应用会获得一个appId,您需要使用该appId生成身份验证令牌。

    限制:您要发布的用户墙应添加在步骤2中创建的应用,这是强制性的,无法解决。

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

    希望这可以让你了解如何做到这一点。

    然后您可以发布到用户的墙上。

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

    userId - 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
    }
    

    你需要一个扩展的令牌来发布到墙上.Banshee很好地解释了获得扩展令牌的步骤..

    编辑:Banshee如何获取扩展令牌:  请按照post

    进行操作

答案 1 :(得分:1)

通过创建扩展页面令牌并使用它来发布帖子一切正常。请参阅:How to get Page Access Token by code?

我很惊讶这个简单的任务很难开始运行,并且获得的帮助很小。