我有一个用ASP.NET webform .NET 4.5 C#制作的网站。这个网站包含一个论坛(由我自制),该论坛的部分内容需要发布到特定的Facebook墙(为此网页制作)。我需要的是:
从论坛的特定部分发布刚创建的帖子(消息)到相应的Facebook墙。
可选:将网页上的论坛帖子与特定Facebook页面上的消息/评论同步
我看过这些指南: 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;
答案 0 :(得分:3)
发布到Facebook墙的方法:
通过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?
我很惊讶这个简单的任务很难开始运行,并且获得的帮助很小。