我的网页是用.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);
}
}
此代码执行时没有任何错误。如果我使用"myusername"和"mypassword"登录,它也会发表评论。
但是,如果我使用任何其他用户登录,它会给我以下错误:E
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)
我在这方面做了很多工作。我不确定这里有什么问题。任何帮助将不胜感激。
看起来您正在使用已弃用且可能无法正常工作的 ClientLogin。请考虑改用OAuth2,下面是一个示例:http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/oauth2_sample/oauth2demo.cs。此外,YouTube将拒绝某些评论,请尝试使用没有特殊字符的简单字符串。