我一直试图在Fb上发布一些内容到我的应用程序的时间轴/ feed / wall,这一天中的大部分时间都是如此,但我一直都在失败。这令人沮丧。
我正在做的是:我有一个简单的控制台C#应用程序,它试图在应用程序的墙上发布一些内容(例如,一个基本的问候世界!)。
此代码段显示了我如何检索访问令牌:
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;
}
}
请注意,ExecutePost()使用AccessToken属性,我在开头粘贴。
我收到的消息是:(OAuthException - #210)(#210)主题必须是页面
请帮助,我不知道我做错了什么。
答案 0 :(得分:0)
应用资料个人资料页面自2012年2月1日起停止使用。您必须创建应用页面。阅读here。
现在,当您有一个应用页面时,您可以像这样更改代码:
string path = string.Format("/{0}/feed", Credentials.PageId);
OR
string path = string.Format("/{0}/feed", Credentials.PageUsername);
[编辑] 要发布到页面,您需要页面访问令牌而不是应用程序访问令牌。阅读here了解如何获取页面访问令牌。
答案 1 :(得分:0)
Maciek,如果您真的只想发布到自己的页面,编写独立应用程序可能不是最简单的方法。您是否尝试过PowerShell和http://facebookpsmodule.codeplex.com?此模块将负责您的权限,并允许您使用简单的脚本执行此操作。