Facebook 如何发布到应用程序';使用Fb C#Sdk的s墙?

Facebook 如何发布到应用程序';使用Fb C#Sdk的s墙?,facebook,facebook-graph-api,facebook-c#-sdk,Facebook,Facebook Graph Api,Facebook C# Sdk,我一直试图在Fb上发布一些东西到我的应用程序的时间线/提要/墙上,但我一直失败。这令人沮丧 我正在做的是:我有一个简单的控制台C#应用程序,它试图在应用程序的墙上发布一些东西(例如,一个基本的hello world!) 此代码段显示如何检索访问令牌: private string _AccessToken; public string AccessToken { get { if (

我一直试图在Fb上发布一些东西到我的应用程序的时间线/提要/墙上,但我一直失败。这令人沮丧

我正在做的是:我有一个简单的控制台C#应用程序,它试图在应用程序的墙上发布一些东西(例如,一个基本的hello world!)

此代码段显示如何检索访问令牌:

 private string _AccessToken;
        public string AccessToken
        {
            get
            {
                if (string.IsNullOrEmpty(_AccessToken))
                {
                    //_AccessToken = string.Format("{0}|{1}", Credentials.AppId, Credentials.AppSecret);
                    Logger.Debug("Attempting to retrieve the access token...");
                    dynamic result = ExecuteGet("oauth/access_token", new
                    {
                        client_id = Credentials.AppId, // my app id
                        client_secret = Credentials.AppSecret, // my app secret
                        grant_type = "client_credentials",
                        scope = "manage_pages,publish_actions,publish_stream"
                    }, false);

                    _AccessToken = result.access_token;
                }
                Logger.Debug("Operation succeeded, access token is : {0}", _AccessToken);
                return _AccessToken;
            }
        }

private object ExecuteGet(string path, object parameters)
        {
            return ExecuteGet(path, parameters, true);
        }

        private object ExecuteGet(string path, object parameters, bool useAccessToken)
        {
            try
            {
                Logger.Debug("Executing GET : {0}", path);
                var client = useAccessToken ? new FacebookClient(AccessToken) : new FacebookClient();
                return client.Get(path, parameters);
            }
            catch (FacebookApiException ex)
            {
                Logger.Error("GET Operation failed : {0}", ex.Message);
                throw;
            }
        }
这就是我试图实际发布内容的方式:

public void PostToApplicationWall(string message)
        {
            string path = string.Format("/{0}/feed", Credentials.AppId);
            IDictionary<string, object> parameters = new Dictionary<string, object>()
            {
                { "description", "[DESCRIPTION] Facebook description..." },
                { "link", "http://tinyurl.org" },
                { "name", "[NAME] Facebook name..." },
                { "caption", "[CAPTION] Facebook caption..." },
                { "message", message }
            };

            dynamic result = ExecutePost(path, parameters);
        }

private object ExecutePost(string path, object parameters)
        {
            try
            {
                Logger.Debug("Executing POST : {0}", path);
                var client = new FacebookClient(AccessToken);
                return client.Post(path, parameters);
            }
            catch (FacebookApiException ex)
            {
                Logger.Error("POST Operation failed : {0}", ex.Message);
                throw;
            }
        }
public void PostToApplicationWall(字符串消息)
{
字符串路径=string.Format(“/{0}/feed”,Credentials.AppId);
IDictionary参数=新字典()
{
{“描述”,“[描述]Facebook描述…”,
{“链接”http://tinyurl.org" },
{“姓名”,“[姓名]Facebook姓名…”,
{“字幕”,“Facebook字幕…”,
{“消息”,消息}
};
动态结果=ExecutePost(路径、参数);
}
私有对象ExecutePost(字符串路径、对象参数)
{
尝试
{
Debug(“正在执行POST:{0}”,路径);
var client=新的FacebookClient(AccessToken);
返回client.Post(路径、参数);
}
捕获(FaceBookApiexException-ex)
{
Logger.Error(“POST操作失败:{0}”,例如Message);
投掷;
}
}
请注意,ExecutePost()使用AccessToken属性,我已在开头粘贴

我得到的信息是:(OAutheException-#210)(#210)主题必须是一个页面


请帮忙,我不知道我做错了什么。

应用程序配置文件页面自2012年2月1日起停止使用。你必须创建一个应用程序页面。阅读

现在,当您有一个应用程序页面时,您可以这样更改代码:

string path = string.Format("/{0}/feed", Credentials.PageId);

[编辑]
要发布到页面,您需要页面访问令牌而不是应用访问令牌。阅读如何获取页面访问令牌。

Maciek,如果你真的只想发布到自己的页面,编写一个独立的应用程序可能不是最简单的方法。你试过PowerShell和吗?此模块将为您提供许可,并允许您使用简单的脚本执行此操作。

谢谢,我将尽快探索此操作。好的,我已经按照您描述的路线进行了操作-现在我得到了异常200:(OAutheException-#200)(#200)用户尚未授权应用程序执行此操作->仍然有点混乱b/c我不是作为用户,而是作为应用程序执行此操作?你能提供进一步的建议吗?令牌中的作用域包括“publish_stream”,因此我应该可以在页面上发布一些内容?有趣的是,我肯定会研究它,尽管我不打算使用PowerShell:)
string path = string.Format("/{0}/feed", Credentials.PageUsername);