发布为页面MVC Facebook上的页面

时间:2015-04-06 21:08:02

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

没有太多麻烦,我设法在我的个人Facebook Feed上发布状态消息。但我想要实现的是在我的页面上发布消息作为页面。

 public class Facebook
        {
            private const string FacebookApiId = "xxxxxxxxxxxxxxx";
            private const string FacebookApiSecret = "xxxxxxxxxxxxxxxx";
            string scope = "publish_stream,manage_pages";


            private const string AuthenticationUrlFormat = "https://graph.facebook.com/oauth/access_token?client_id={0}&client_secret={1}&grant_type=client_credentials&scope=publish_stream,manage_pages";


            static string GetAccesToken(string apiId, string apiSecret)
            {

                string url = string.Format(AuthenticationUrlFormat, apiId, apiSecret);
                string accesToken = string.Empty;
                WebRequest request = WebRequest.Create(url);
                WebResponse response = request.GetResponse();

                using (Stream responseStream = response.GetResponseStream())
                {
                    StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                    String responseString = reader.ReadToEnd();

                    NameValueCollection query = HttpUtility.ParseQueryString(responseString);

                    accesToken = query["access_token"];
                }
                if (accesToken.Trim().Length == 0)
                {
                    throw new Exception("no Access Token");
                }

                return accesToken;

            }

            static void PostMessage(string accessToken, JobOfferModel message)
            {
                try
                {
                    FacebookClient facebookClient = new FacebookClient(accessToken);

                    dynamic messagePost = new ExpandoObject();
                    messagePost.access_token = accessToken;

                    messagePost.name = message.JobTitle;
                    messagePost.message = message.Content;
                    messagePost.caption = "www.Site.com";





                    facebookClient.Post("me/feed", messagePost);
                }
                catch (FacebookOAuthException ex)
                {
                    Console.WriteLine(ex);
                }
                catch (Exception ex)
                {

1 个答案:

答案 0 :(得分:0)

正如luschn所提到的,您需要使用页面访问令牌作为页面发布。您可以通过对“我/帐户”端点进行API调用来实现此目的。这将返回您管理的页面列表,以及每个页面的访问令牌。

使用网页的访问令牌,将下一个“我/ Feed”请求发布为该页面。您可以在此处获取有关使用网页访问令牌的更多详细信息:https://developers.facebook.com/docs/facebook-login/access-tokens#pagetokens

您还应该更新登录范围,以使用新的“publish_actions”权限,而不是“publish_stream”。