2

将视频上传到 Facebook 时出现问题。

我使用适用于 Android 的 Facebook SDK: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 返回:“连接已被远程服务器关闭”)。并且对于一些错误的用户没有工作:“远程服务器返回错误:(400)错误请求”。

我的代码有什么问题?

4

1 回答 1

0

我已经解决了这个问题。我已经开始使用 .NET 的 facebook SDK 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 });
于 2013-07-18T04:29:12.513 回答