1

我正在制作一个用于将视频上传到 Youtube 的 POC ASP.NET MVC 应用程序。当我尝试上传视频时,我得到一个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");
    }
}  

你们中的任何人都知道出了什么问题吗?

4

1 回答 1

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);

于 2013-04-17T19:33:40.343 回答