如何从我的asp.net mvc 3网站在facebook上发帖
本文关键字:网站 facebook mvc 我的 asp net | 更新日期: 2023-09-27 18:24:46
我假装将我的网站与facebook集成,并在用户与网络应用程序交互时自动发布(在特定的facebook帐户上)。
有什么方法可以让这个操作像Web服务一样吗?,验证并调用一个将我直接发送的信息发布在facebook墙上的url?
我使用的是asp.net mvc3 C#。我发现了一个facebook开发者工具包库,这是正确的启动方式吗?我应该怎么做?
必要的是只在脸书账户上自动写一篇帖子,例如,当我在我的网站上写一篇新文章(新闻)时,它会自动发布在fb上。
有什么办法让我开始吗?
我做了类似的事情,当用户点击我的mvc应用程序上的"共享"按钮时,它会在墙上发布一些内容。使用oauth对话框的问题是,它会将浏览器重定向到facebook网站,以便用户登录并接受应用程序权限。
在"共享"按钮上,我将其链接到以下网址:
<a href=""https://www.facebook.com/dialog/oauth?client_id=[YOUR_APP_ID]&redirect_uri=[THE_REDIRECT_PAGE]/&scope=publish_stream"">
<img src='@Url.Content("~/Images/facebook_share.png")' alt="Share on Facebook!" style="height:28px" />
</a>
YOUR_APP_ID是您的facebook应用程序ID。THE_REDIRECT_PAGE是您网站上的一个公共页面,一旦用户登录并接受权限,facebook就会自动重定向。当facebook重定向时,它会附加一个名为"code"的查询字符串参数。注意:重定向页面必须以"/"结尾,不能以文档结尾,否则将无法工作!
一旦用户接受了你的请求,你必须向脸书询问另一个代码,称为访问代码,用于在用户墙上发帖。
此代码在重定向页面上:
public ActionResult Index(string code)
{
string fbAuthCode = Request["code"]; //The authorization code.
string fbAppId = "XXXXXXX"; //Your fb application id.
string fbSecretAppId = "XXXXXXXXXXXXXXXXXXXXX"; //Your fb secret app id, it is found on the fb application configuration page.
string redirectUrl = string.Format("[THE_REDIRECT_PAGE]", locationPointId, entryLocationId); //The redirect url. THIS MUST BE THE EXACT SAME REDIRECT URL USED ON THE JAVASCRIPT LINK!
string fbUrl = "https://graph.facebook.com/oauth/access_token?client_id=" + fbAppId + "&redirect_uri=" + redirectUrl + "&client_secret=" + fbSecretAppId + "&code=" + fbAuthCode; //Url used to post.
string accessToken = string.Empty;
try
{
WebClient client = new WebClient();
using (Stream stream = client.OpenRead(fbUrl))
using (StreamReader reader = new StreamReader(stream))
{
accessToken = reader.ReadToEnd().Split('&')[0].Replace("access_token=", string.Empty);
reader.Close();
}
}
catch (Exception ex)
{
throw new Exception("An error ocurred while trying to get the fb token in " + fbUrl, ex);
}
一旦你有了访问令牌,你就可以发布到用户墙上:
string postUrl = "https://graph.facebook.com/me/feed";
string postParameters;
postParameters = string.Format("message={0}&picture={1}&name={2}&caption={2}&description={3}&link={4}&access_token={5}",
"[Message]",
"[PictureUrl]",
"[Name]",
"[Caption]",
"[Link]",
accessToken);
try
{
System.Net.WebRequest req = System.Net.WebRequest.Create(postUrl);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(postParameters);
req.ContentLength = bytes.Length;
using (System.IO.Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length); //Push it out there
os.Close();
using (WebResponse resp = req.GetResponse())
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
ViewBag.PostResult = sr.ReadToEnd().Trim();
sr.Close();
}
os.Close();
}
}
catch (Exception ex)
{
throw new Exception("An error ocurred while posting data to the user's wall: " + postUrl + "?" + postParameters, ex);
}
return RedirectToAction(XXXXXXXXXXXxx....); //Then i redirect to another page.
您可以看到,在异常上,我抛出了发布的url(用于调试目的)。使用该url,您通常可以访问facebook Graph API资源管理器或Linter,检查真正的错误。
我不知道这是否正是你想要的,但希望它能给你一个开始。。。我已经为此挣扎了几天,因为开放图上的facebook文档还不是很好,至少对我们这些不使用curl的人来说:)
https://developers.facebook.com/docs/opengraph/tutorial/https://developers.facebook.com/docs/opengraph/
希望能有所帮助。MT.
很简单:
步骤1:
通过请求获取有效的facebook令牌"*https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope="publish_stream,email*"(此处的完整权限列表:https://developers.facebook.com/docs/reference/api/user/)
步骤2:
将您的消息张贴到用户墙上:
curl-F'access_token=…'''-F'消息=您的消息'''https://graph.facebook.com/ID_OR_USERNAME/feed