Facebook 如何发布到应用程序';使用Fb C#Sdk的s墙?
我一直试图在Fb上发布一些东西到我的应用程序的时间线/提要/墙上,但我一直失败。这令人沮丧 我正在做的是:我有一个简单的控制台C#应用程序,它试图在应用程序的墙上发布一些东西(例如,一个基本的hello world!) 此代码段显示如何检索访问令牌: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 (
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);