我使用facebook c#sdk创建了一个 asp.net mvc 3 facebook应用程序。
我正在尝试发布到我的应用程序墙,它可以工作,但帖子是以这种格式创建的:
[我的帐户名称]通过[我的申请]
因此,该帖子会显示在 [我的应用程序] +其他组中。
我希望帖子显示为由应用程序制作,而不是由我制作,因此帖子会显示在只是[我的应用程序] 组中。
我一直在寻找这个问题的答案,而且每个人都说,你必须获得应用程序的访问令牌,但没有人说如何做到这一点。
请有人提供如何做的示例代码???
我尝试了两种方式(三种方式),但三种方式都给了我以下错误:
当前查看器204182346262383(EntID:204182346262383)无法看到由ID 204182346262383支持的实体(类EntApplication)。
这是我的代码:
private void Publish(string message, string caption, string description, string name, string picture, string link)
{
var args = new Dictionary<string, object>();
args["message"] = message;
args["caption"] = caption;
args["description"] = description;
args["name"] = name;
args["picture"] = picture;
args["link"] = link;
string path = AppId + "/feed";
var fbApp = new FacebookClient(GetAppAccessToken());
fbApp.Post(path, args);
}
private string GetAppAccessToken()
{
var fb = new FacebookOAuthClient { ClientId = AppId, ClientSecret = SecretKey };
dynamic result = fb.GetApplicationAccessToken();
var appAccessToken = result.access_token;
return appAccessToken.ToString();
}
我非常感谢这方面的帮助,我已经坚持了很多天。我总是走到尽头。
答案 0 :(得分:3)
您需要使用Facebook应用程序访问令牌发出请求。
var fb = new FacebookClient("{app_access_token}");
dynamic result = fb.Post("/{app_id}/feed", new Dictionary<string, object> { { "message", "hello" } });
有两种方法可以使用应用程序令牌。
使用FacebookOAuthClient :(此方法使用OAuth2标准获取应用程序访问令牌,这是获取应用程序访问令牌的首选方式。但是向facebook服务器发出请求。)
var fb = new FacebookOAuthClient { ClientId = "{app_id}", ClientSecret = "{app_secret}" };
dynamic result = fb.GetApplicationAccessToken();
var appAccessToken = result.access_token;
手动创建应用程序令牌:
var appAccessToken = "{app_id}|{app_secret}";
将{app_id}和{app_secret}替换为适当的值。
答案 1 :(得分:0)
正如 prabir 建议您需要使用经过身份验证的Facebook客户端作为应用程序而不是连接用户。
这是使用版本5.03 beta的短代码snipet:
var fbApp = new FacebookClient(FacebookContext.Current);
dynamic result = fbApp.Post("/"+FacebookContext.Current.AppId+"/feed", new Dictionary<string, object> { { "message", "Hello World" } });