2013-03-13 175 views
2

将视频上传到Facebook时出现问题。从服务器上传视频到Facebook

我使用Facebook SDK为Android:https://github.com/facebook/facebook-android-sdk具有下列权限以获得访问令牌:“publish_stream”,“电子邮件”,“video_upload”,“publish_actions”

然后我送令牌服务器,这应该上传视频。服务器尝试使用下面的代码上传视频:

string fullurl = string.Format("https://graph-video.facebook.com/me/videos?title={0}&description={1}&access_token={2}", HttpUtility.UrlEncode(fileName), HttpUtility.UrlEncode(description), token); 

Facebook的返回错误:

System.Net.WebException: The remote server returned an error: (400) Bad Request. 
    at System.Net.WebClient.UploadFile(Uri address, String method, String fileName) 
    at System.Net.WebClient.UploadFile(String address, String fileName) 

但是,当我检查令牌下面的链接:https://graph.facebook.com/me?access_token=myToken Facebook的返回用户信息。这意味着令牌是有效的。但是,如果此请求返回错误代码,我可以在哪里找到有关错误代码的信息?

该解决方案完美适用于某些用户,对于其他用户而言,它工作不稳定(6个视频中的4个上传失败,Facebook返回:“由远程服务器关闭的连接”)。并没有为一些用户工作的错误:“远程服务器返回错误:(400)错误的请求”。

我的代码有什么问题?

回答

0

我已经解决了这个问题。我已经开始使用.NET SDK for .NET http://facebooksdk.net/,它适用于我。

 Facebook.FacebookClient fb = new FacebookClient(facebookEditTask.facebookToken); 
     fb.PostCompleted += (o, e) => 
     { 
      if (e.Cancelled || e.Error != null) 
      { 
       return; 
      } 

      var result = e.GetResultData(); 
      facebookVideoUrl = CreateLinkToVideo(result.ToString()); 
     }; 

     dynamic parameters = new ExpandoObject(); 
     parameters.source = new FacebookMediaStream 
     { 
      ContentType = "video/mp4", 
       FileName = Path.GetFileName(facebookEditTask.FilePath) 
     }.SetValue(File.OpenRead(facebookEditTask.FilePath)); 

     parameters.message = fbMessage; 

     Task t = fb.PostTaskAsync("me/videos", 
        new { message = fbMessage, parameters.source }); 
相关问题