将视频上传到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会返回:“连接由远程服务器关闭”)。并没有为一些错误的用户工作:“远程服务器返回错误:(400)错误请求”。
我的代码有什么问题?
答案 0 :(得分: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 });