2013-03-13 170 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 });