【问题标题】:Post message from Website to Facebook wall将消息从网站发布到 Facebook 墙
【发布时间】:2014-06-21 00:13:27
【问题描述】:

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

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

  2. 可选:将网页上的论坛主题与特定 facebook 页面上的消息/cmets 同步

我看过这些指南: 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;

【问题讨论】:

  • 这些链接使用不同的库。你用的是哪一个?。 Facebook C# SDK (facebooksdk.net) 会让你做你需要的。
  • 我现在没有使用任何库,但我正在寻找最简单和最好的方法来做到这一点。我会查看 facebooksdk.net。如果您有关于如何做我需要的事情的指南,那就更好了。
  • IMO Facebook C# SDK 是必经之路,它易于使用并为您提供所需的 API。此页面为您提供了如何获取/发布数据到 Facebook 的示例:facebooksdk.net/docs/making-synchronous-requests
  • @Slartibartfast 我需要在我的网站内完成所有操作,无需登录表单等。当用户在我的网站上发布消息时,我需要将它们发布在我的 Facebook 页面上,用户不需要做任何事情来实现这一点。

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


【解决方案1】:

在 Facebook 墙上发帖的方法:

  1. 您需要在 facebook 开发者工具中注册。
  2. 创建应用(填写表格)。
  3. 下载 FGT 5.0.480(Facebook 图形工具包)
  4. 在您的 Web 应用程序中引用 FGT dll。
  5. FGT 有方法可以发布到 facebook 墙上,但需要 appId。
  6. 使用您在第 2 步中创建的应用的应用 ID。

要通过 facebook 在用户的墙上发帖,只能通过应用程序。

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

这将使您能够设想您需要什么。

您的应用会获得一个 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

【讨论】:

  • 为什么不使用 Facebook SDK .NET?我已经实现了一些 Facebook SDK .NET 代码,但问题是我无权发布到网站的 Facebook 页面?
  • 嘿女妖,我已经编辑了下面的答案。请尝试让我知道您是否能够做到这一点。
  • 谢谢,但不,同样的异常:附加信息:(OAuthException - #200) (#200) 用户尚未授权应用程序执行此操作。我确定我运行的代码与您建议的相同。你测试过代码吗?如果是这样,那么也许我在 facebook 应用程序中的设置有一些问题?我看到的所有示例都涉及用户必须手动进行自动化的网页,这不是我想要的。我需要我的网页作为我的 facebook 应用程序发布到 facebook 页面。 facebook 应用程序应该被授权发布(我希望)。
  • 您是否将应用添加到用户?同样在应用设置中你需要添加 publish_stream 和 publish_actions 权限。
  • 应该不是很复杂的Banshee。我觉得你在正确的轨道上只是你需要清楚地了解 facebook oauth 是如何工作的。让我看看我是否可以整理一些东西,因为我正在旅行..
【解决方案2】:

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

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

【讨论】:

  • 真棒女妖!!!很高兴你让它工作.. !!对不起,我不能贡献:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
相关资源
最近更新 更多