在弃用过程中使用REST api,我正在尝试将现有应用程序转换为使用facebook c#sdk。
我们目前可以做的一件事是通过上传来发布视频。
我已经按如下方式创建了一个POST请求,但是我收到了“不支持的帖子请求”失败。
byte[] video = File.ReadAllBytes(TESTDATA_DIR + "Snowboarding penguin.mov");
if (_FBClient != null)
{
var parameters = new Dictionary<string, object>();
parameters.Add("message", "This is a Graph API unit test message containing a video! (" + DateTime.Now.ToString() + ")");
parameters["caption"] = "This is the caption for the unit test message!";
parameters["description"] = "This is description for the unit test message!";
parameters["name"] = "This is name of the unit test message!";
parameters["req_perms"] = "publish_stream";
parameters["scope"] = "publish_stream";
var mediaObject = new FacebookMediaObject
{
FileName = "Snowboarding penguin.mov",
ContentType = "video/mov",
};
mediaObject.SetValue(video);
parameters.Add("source", mediaObject);
_FBClient.Post("me/videos", parameters);
}
我看到很多关于视频上传的一般帖子都没有得到GRAPH API的支持,但希望FB现在已经解决了这个问题。
任何人都可以引导我朝正确的方向发出请求吗?
TIA
答案 0 :(得分:1)
图表api不支持视频上传。您将需要使用旧的休息api。
<击> 撞击>
<击> var videoPath = "c:\\sample.3gp";
byte[] video = File.ReadAllBytes(videoPath);
var mediaObject = new FacebookMediaObject
{
FileName = "sample.3gp",
ContentType = "video/3gpp"
};
mediaObject.SetValue(video);
dynamic parameters = new ExpandoObject();
parameters.source = mediaObject;
parameters.method = "video.upload";
parameters.access_token = "access_token";
var fb = new FacebookClient();
dynamic result = fb.Post(parameters);
击> <击> 撞击>
<强>更新强> Facebook最近支持通过图形api上传视频。您可以在http://blog.prabir.me/post/Facebook-CSharp-SDK-Uploading-Video-via-Graph-Api.aspx
找到有关如何使用Facebook C#SDK上传图表api视频的详细信息需要Facebook C#SDK v5.0.46 或更高版本。
var fb = new FacebookClient("access_token");
dynamic parameters = new ExpandoObject();
parameters.source = new FacebookMediaObject { ContentType = "video/3gpp", FileName = "video.3gp" }.SetValue(File.ReadAllBytes(@"c:\video.3gp"));
parameters.title = "video title";
parameters.description = "video description";
dynamic result = fb.Post("/me/videos", parameters);
Console.WriteLine(result);