发布到我管理员所在的封闭组

本文关键字:管理员 | 更新日期: 2023-09-27 18:36:02

我有以下代码(facebook C# SDK)发布到facebook wall:

public long? UploadPost(string intLinkTitle, string inMessage, string inLinkCaption, string inLinkUrl, string inLinkDescription, string inLinkUrlPicture)
        {
            object obj;
            Facebook.JsonObject jsonObj;
            FacebookClient client;
            string access_token = ConfigurationManager.AppSettings["FacebookPageAccessToken"].ToString();
            client = new FacebookClient(access_token);
            var args = new Dictionary<string, object>();
            args["message"] = inMessage;
            args["caption"] = inLinkCaption;
            args["description"] = inLinkDescription;
            args["name"] = intLinkTitle;
            args["picture"] = inLinkUrlPicture;
            args["link"] = inLinkUrl;
            if ((obj = client.Post("/" + ConfigurationManager.AppSettings["FacebookPageId"].ToString() + "/feed", args)) != null)
            {
                if ((jsonObj = obj as Facebook.JsonObject) != null)
                {
                    if (jsonObj.Count > 0)
                        return long.Parse(jsonObj[0].ToString().Split('_').Last().ToString());
                }
            }
            return null;
        }
    }

只要我发布到我的公共 facebook 网站页面,这就可以很好地工作,但是当将FacebookPageId更改为组 ID 时,我会得到(FacebookApiException - #200) Permissions error.

我的用户是组和页面的管理员。

我尝试使用以下行发布来自图形 API 资源管理器的消息:294632750660619/feed/?message=test但这里有语法问题,也尝试了294632750660619/feed?message=test但没有成功。

如何发布到已关闭的脸书群组?

发布到我管理员所在的封闭组

好的,我找到了正确的方法。这就是我要做的:

  1. 转到 https://developers.facebook.com/并创建新应用程序
  2. 设置>添加平台(网站并设置站点URL(例如本地主机..)
  3. 将应用程序设置为上线(状态和评论>是),为此,需要在"联系人电子邮件">设置下设置电子邮件地址
  4. 转到图形 API 资源管理器
  5. 从下拉列表中选择新应用
  6. 单击获取访问令牌
  7. 选择正确的权限(user_groupsuser_statususer_photosmanage_pagespublish_actionsread_insightsread_stream),然后单击获取访问令牌。现在我们机器人一个短命的图肯
  8. 使用此 URL 生成扩展用户令牌(有效期为 60 天)(更改参数(3)):https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=[app-id]&client_secret=[app-secret]&fb_exchange_token=[short-lived-token]
  9. 在应用程序中使用生成的无过期访问令牌
  10. 在此处验证访问令牌:https://developers.facebook.com/tools/debug/access_token/

使用此代码上传帖子:

public long? UploadPost(string intLinkTitle, string inMessage, string inLinkCaption, string inLinkUrl, string inLinkDescription, string inLinkUrlPicture)
        {
            object obj;
            Facebook.JsonObject jsonObj;
            FacebookClient client;
            string access_token = ConfigurationManager.AppSettings["FacebookPageAccessToken"].ToString();
            client = new FacebookClient(access_token);
            var args = new Dictionary<string, object>();
            args["message"] = inMessage;
            args["caption"] = inLinkCaption;
            args["description"] = inLinkDescription;
            args["name"] = intLinkTitle;
            args["picture"] = inLinkUrlPicture;
            args["link"] = inLinkUrl;
            if ((obj = client.Post("/" + ConfigurationManager.AppSettings["FacebookPageId"].ToString() + "/feed", args)) != null)
            {
                if ((jsonObj = obj as Facebook.JsonObject) != null)
                {
                    if (jsonObj.Count > 0)
                        return long.Parse(jsonObj[0].ToString().Split('_').Last().ToString());
                }
            }
            return null;
        }

要获得饲料,请使用此:

private void GetFeed()
        {
            object obj;
            Facebook.JsonObject jsonObj;
            Facebook.JsonObject jsonPaging;
            FacebookClient client;
            int pageCount = 0;
            string access_token;
            string URL;
            DateTime fetchFaceBookFeedFromDate;
            DateTime? oldestPostFetched = null;
            fetchFaceBookFeedFromDate = DateTime.Now.AddDays(-30);
            access_token = ConfigurationManager.AppSettings["FacebookPageAccessToken"].ToString();
            URL = "/" + ConfigurationManager.AppSettings["FacebookPageId"].ToString() + "/feed";
            client = new FacebookClient(access_token);

            while (URL.Length > 0 && pageCount < 1000)
            {
                if ((obj = client.Get(URL)) != null)
                {
                    if ((jsonObj = obj as Facebook.JsonObject) != null && jsonObj.Count > 0)
                    {
                        if (jsonObj[0] is Facebook.JsonArray)
                            oldestPostFetched = SaveFacebookForumThread(jsonObj[0] as Facebook.JsonArray, fetchFaceBookFeedFromDate);
                        if (jsonObj.Keys.Contains("paging") && (jsonPaging = jsonObj["paging"] as Facebook.JsonObject) != null && jsonPaging.Keys.Contains("next"))
                            URL = jsonPaging["next"].ToString();
                        else
                            break;
                    }
                }
                pageCount++;
                if (oldestPostFetched.HasValue && fetchFaceBookFeedFromDate > oldestPostFetched)
                    break;
            }
        }