2011-02-17 102 views
0

随着REST api在被弃用的过程中,我试图将我们现有的应用程序转换为使用facebook c#sdk。Facebook图形API - 视频上传

我们目前可以做的一件事是上传视频。

我已经创建了一个POST请求,如下所示,但是我得到'Unsupported Post Request'失败。

  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); 
     } 

我看到许多关于视频上传一般职位不是由图形API的支持,但希望这已经被FB现在已经得到解决。

任何人都可以引导我以正确的方向获取此请求的工作?

TIA

回答

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); 

UPDATE 通过Facebook的图形API支持最近上传的视频。你可以找到关于如何使用Facebook的C#SDK的图形api视频上传的细节http://blog.prabir.me/post/Facebook-CSharp-SDK-Uploading-Video-via-Graph-Api.aspx

需要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); 
+0

抱歉,未收到您的回复通知。我试过这个,但是我收到了'无效oAuth 2.0令牌'的回应 - 但是我可以发布没有问题的照片或状态消息? – VorTechS 2011-02-23 13:06:19