Facebook页面上发布的链接不会显示

时间:2013-02-15 08:02:44

标签: c# facebook-graph-api hyperlink posting

我正在开发一个小模块,需要在Facebook页面上自动发布链接。 我做了以下设置:

  • 创建了一个Facebook页面(将显示链接的人)
  • 创建了一个Facebook应用
  • 在页面管理员个人资料以及Facebook页面上添加了具有以下权限的应用:publish_stream,manage_pages

为了获得有效的访问令牌(现在手动 - 我知道不推荐,但它在我的情况下完成了工作)我已经完成了以下工作:

  1. 以网页管理员身份登录
  2. 导航到以下页面:https:// developers.facebook.com/tools/access_token /
  3. 通过以下网址复制用户令牌并使其成为非瞬态:https:/ / graph.facebook.com/oauth/access_token?client_id={app id}& client_secret = {app secret}& ; grant_type = fb_exchange_token& fb_exchange_token = {我之前复制过的令牌}
  4. 通过触发GET到https://graph.facebook.com/me/accounts?access_token= {永不过期的访问令牌}
  5. ,从步骤3中获得的用户令牌中获取页面访问令牌

    从第4步之后得到的json中,我复制了我感兴趣的页面的访问令牌,并使用以下C#代码发布链接:

    try
            {
                dynamic data = new ExpandoObject();
    
                var fbm = message as FacebookMessage;
    
                data.access_token = ConnectionData.AuthenticationToken;
                data.message = fbm.Message;
                data.link = fbm.Link;
                data.name = fbm.Name;
                data.caption = fbm.Caption;
                data.description = fbm.Description;
                if (!String.IsNullOrEmpty(fbm.Icon))
                {
                    data.picture = fbm.Icon;
                }
                var @params = ((ExpandoObject)data).ToUrl();
    
                var _currentRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(String.Format("https://graph.facebook.com/{0}/feed?{1}", _currentEndpoint.ObjectID, @params));
                _currentRequest.Method = "POST";
                _currentRequest.ContentType = "application/json; charset=utf-8";
                _currentRequest.UserAgent = "Mozilla/4.0 (compatible; Windows NT)";
                _currentRequest.Accept = "*/*";
                _currentRequest.CookieContainer = new CookieContainer();
                _currentRequest.KeepAlive = false;
                //_currentRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
                //using (var sw = new StreamWriter(_currentRequest.GetRequestStream(), Encoding.UTF8))
                //{
                //    sw.Write(json);
                //}
    
                string json;
                var resp = _currentRequest.GetResponse();
    
                using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
                {
                    json = sr.ReadToEnd();
                }
    
                var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                var output = jsonSerializer.Deserialize<dynamic>(json);
    
                return new OperationStatus();
            }
            catch (Exception ex)
            {
                return new OperationStatus { Exception = ex };
            }
        }
    

    “_ currentNendpoint.ObjectID”是页面的对象ID。 POST成功完成,只要我以管理员身份登录,我就会在管理员的墙上和页面上看到链接。 我越早注销,我看不到任何发布的链接,也没有其他任何喜欢该页面的人。

    是什么给出的?如何使链接显示在页面墙上以及喜欢该页面的人的墙上。 我确实检查了页面上的垃圾邮件,我没有在那里看到我的链接,并且从隐私设置中看到的一切都很明显。

1 个答案:

答案 0 :(得分:0)

阅读完这篇文章后:Posting a link to a page not showing up?我终于开始运作了。问题似乎与访问令牌有关,但我仍然没有弄清楚出了什么问题: 这是我最后做的:

这似乎为我提供了向页面墙上的每个人发布可见链接所需的访问令牌。