发布到我管理员所在的封闭组
本文关键字:管理员 | 更新日期: 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
但没有成功。
如何发布到已关闭的脸书群组?
好的,我找到了正确的方法。这就是我要做的:
- 转到 https://developers.facebook.com/并创建新应用程序
- 设置>添加平台(网站并设置站点URL(例如本地主机..)
- 将应用程序设置为上线(状态和评论>是),为此,需要在"联系人电子邮件">设置下设置电子邮件地址
- 转到图形 API 资源管理器
- 从下拉列表中选择新应用
- 单击获取访问令牌
- 选择正确的权限(
user_groups
、user_status
、user_photos
、manage_pages
、publish_actions
、read_insights
和read_stream
),然后单击获取访问令牌。现在我们机器人一个短命的图肯 - 使用此 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]
- 在应用程序中使用生成的无过期访问令牌
- 在此处验证访问令牌:
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;
}
}