添加评论到youtube视频

时间:2013-02-01 12:19:06

标签: c# asp.net youtube-api gdata-api

我的网页是在.net中开发的,我正在尝试使用以下代码为youtube视频添加评论。

     string lsDeveloperKey = "myDeveloperKey";

    //This will ask user to login to accounts.google for posting comment
        if (!Request.QueryString.AllKeys.Contains("token"))
        {
            string lsUserName = "myusername";
            string lsPassword = "mypassword";

            YouTubeRequestSettings loSettings = new YouTubeRequestSettings(Keys.PortalName, lsDeveloperKey, lsUserName, lsPassword);
            YouTubeRequest loRequest = new YouTubeRequest(loSettings);

            Uri videoEntryUrl = new Uri(string.Format("{0}/{1}", Google.GData.YouTube.YouTubeQuery.DefaultVideoUri, "ofjQ_Gf5CQc"));
            Google.YouTube.Video loVideo = loRequest.Retrieve<Google.YouTube.Video>(videoEntryUrl);

            string lsRandomVideoId = getRandomId() + loVideo.VideoId;
            Session[lsRandomVideoId] = loVideo; ;

            Response.Redirect(AuthSubUtil.getRequestUrl(Request.Url.ToString() + "?v=" + lsRandomVideoId, "http://gdata.youtube.com", false, true));
        }

    //This will post a comment for logged user
        else
        {
            Session["token"] = AuthSubUtil.exchangeForSessionToken(Request.QueryString["token"], null).ToString();

            YouTubeRequestSettings loSettings = new YouTubeRequestSettings(Keys.PortalName, lsDeveloperKey, (String)            Session["token"]);
            YouTubeRequest loRequest = new YouTubeRequest(loSettings);

            Video loVideo = (Video)Session[Request.QueryString["v"]];

            Comment loComment = new Comment();
            loComment.Content = "This is my comment from my app";
            loRequest.AddComment(loVideo, loComment);
        }
    }

此代码执行时没有任何错误。如果我使用&#34; myusername&#34;登录,它也会发表评论。 &安培; &#34;输入mypassword&#34;

但如果我与其他任何用户登录,则会出现以下错误: ë

Execution of request failed:
  

https://gdata.youtube.com/feeds/api/videos/ofjQ_Gf5CQc/comments

 Stacktrace: at Google.GData.Client.GDataRequest.Execute() at
 Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter) at
 Google.GData.Client.GDataGAuthRequest.Execute() at
 Google.GData.Client.Service.EntrySend(Uri feedUri, AtomBase baseEntry,
 GDataRequestType type, AsyncSendData data) at
 Google.GData.Client.MediaService.EntrySend(Uri feedUri, AtomBase
 baseEntry, GDataRequestType type, AsyncSendData data) at
 Google.GData.Client.Service.Insert(Uri feedUri, AtomEntry newEntry,
 AsyncSendData data) at Google.GData.Client.Service.Insert[TEntry](Uri
 feedUri, TEntry entry) at
 Google.YouTube.YouTubeRequest.AddComment(Video v, Comment c) at
 YouTubeComment.Page_Load(Object sender, EventArgs e)

我在这方面做了很多工作。我不确定这里有什么不对。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

看起来您使用的是不推荐使用的ClientLogin,可能无效。请考虑使用OAuth2,这是一个示例:http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/oauth2_sample/oauth2demo.cs。此外,YouTube会拒绝某些评论,尝试使用没有特殊字符的简单字符串。