首页 文章

从服务器上传视频到Facebook

提问于
浏览
2

将视频上传到Facebook时遇到问题 .

我使用Facebook SDK for Android:https://github.com/facebook/facebook-android-sdk获取具有以下权限的访问令牌:"publish_stream","email","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会返回:"connection closed by remote server") . 并没有为一些错误的用户工作:"The remote server returned an error: (400) Bad Request" .

我的代码有什么问题?

1 回答

  • 0

    我已经解决了这个问题 . 我已经开始使用facebook 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 });
    

相关问题