我正在制作一个POC ASP.NET MVC应用程序,用于将视频上传到Youtube。
当我尝试上传视频时,我得到一个GDataRequestException
,其中WebException
为内部异常。这是我得到的信息:
(500) Internal Server Error.
The stacktrace of the WebException is:
at System.Net.HttpWebRequest.GetResponse()
at Google.GData.Client.GDataRequest.Execute()
这是我的代码:
public ActionResult oauth2callback(string code)
{
if (!string.IsNullOrWhiteSpace(code))
{
JObject json;
NameValueCollection postData = new NameValueCollection();
postData.Add("code", code);
postData.Add("client_id", "The client ID");
postData.Add("client_secret", "The secret code");
postData.Add("redirect_uri", "http://localhost:64896/home/oauth2callback");
postData.Add("grant_type", "authorization_code");
json = JObject.Parse(
HttpClient.PostUrl(
new Uri("https://accounts.google.com/o/oauth2/token"), postData));
string accessToken = json["access_token"].ToString();
string refreshToken = json["refresh_token"].ToString();
bool isBearer =
string.Compare(json["token_type"].ToString(),
"Bearer",
true,
CultureInfo.CurrentCulture) == 0;
var settings = new YouTubeRequestSettings("App name",
"API key from simple API access", accessToken);
var request = new YouTubeRequest(settings);
Video newVideo = new Video();
newVideo.Title = "Test Video";
newVideo.Keywords = "key 1 , key 2";
newVideo.Tags.Add(new MediaCategory("Games", YouTubeNameTable.CategorySchema));
newVideo.Description = "Upload testing";
newVideo.YouTubeEntry.Private = false;
newVideo.Private = true;
newVideo.YouTubeEntry.MediaSource = new
MediaFileSource(@"C:\Users\Kaare\Videos\TestVideo1.avi", "video/x-msvideo");
try
{
Video createdVideo = request.Upload(newVideo);
return View();
}
catch (GDataRequestException exp)
{
//Do something mening full
}
}
else
{
return RedirectToAction("LoginFail");
}
}
你们有没有人知道什么是错的?
答案 0 :(得分:0)
错误500很难。
是否可以获得可能包含更多详细信息的XML响应? https://developers.google.com/youtube/2.0/developers_guide_protocol_error_responses
500响应代码表示YouTube在处理请求时遇到错误。您可以稍后重试该请求。
https://developers.google.com/youtube/2.0/reference#Response_Codes
您对oauth2参数使用的范围是什么?您是否尝试过其他YouTube帐户?你能尝试使用可恢复的上传吗?
我唯一看到的可能是问题的是YouTubeRequestSettings(),它是使用authsub的构造函数,而您使用的是oauth2。您可以修改youtube sdk的源代码并添加一个新的YouTubeRequestSettings()构造函数,该构造函数使用oauth2参数对象而不仅仅是访问密钥。例如,您可以查看gdata sdk中的RequestSettings()oauth2构造函数。
这可能不是问题,因为你可以做其他请求,只是不上传。
最后一个想法: request.Service.InsertAsync(new Uri(“http://uploads.gdata.youtube.com/feeds/api/users/default/uploads”),newVideo.AtomEntry,newVideo);