0

我正在 VB.NET 中制作一个与 YouTube 交互的桌面应用程序。到目前为止,我已经设法解决了 OAuth2 身份验证的“问题”,并且我有了我的令牌(身份验证和刷新)。我需要每小时刷新一次身份验证令牌,但这不是问题。

我尝试使用 http POST 和 YouTube API 以多种方式对视频发表评论。在 HTTP 请求 POST 上,我收到“错误请求”响应,在 YouTube API 上尝试我什么也没得到,没有发表评论,也没有错误。我怎样才能做到这一点?YouTube 数据 API 的文档已损坏,我无法在 Visual Studio 上打开或安装它,因此我使用人们在线发布的小示例通过反复试验进行测试。

这是我用于 HTTP 版本的代码:

'create the xml comment as in API example
Dim ContentLenght As Long
Dim xmlData As New System.Xml.XmlDocument()
Dim commentXML As XDocument =
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
    xmlns:yt="http://gdata.youtube.com/schemas/2007">
<content><%= comment %></content>
</entry>

ContentLenght = commentXML.ToString.Length

'---------------------------------------------------------
'create the POST request to submit the comment

Dim sentXml As Byte() = System.Text.Encoding.ASCII.GetBytes(commentXML.ToString)
Dim url = "http://gdata.youtube.com/feeds/api/videos/" & videoID & "/comments"
Dim req As New WebClient
req.Headers.Add("Host: gdata.youtube.com")
req.Headers.Add("Length:" & ContentLenght)
req.Headers.Add("Content-Type: application/atom+Xml")
req.Headers.Add("Authorization: Bearer " & Token)
req.Headers.Add("GData-Version: 2")
req.Headers.Add("X-GData-Key: key=" & developerKey)
Dim response As Byte() = req.UploadData(url, "POST", sentXml)

我尝试的 API 代码是:

Dim commentingSettings As New YouTubeRequestSettings(appName, developerKey, Token)
Dim lcommentingRequest As New YouTubeRequest(commentingSettings)

Dim video As New Video()
video.VideoId = "JEvV0RHMU-Y"
Dim comm As New Comment
comm.Content = "comm text here"

lcommentingRequest.AddComment(video, comm)
4

2 回答 2

1

我已经使用 Youtube API 解决了这个问题。问题是“视频”对象的创建方式。这是需要它的人的工作代码:

Dim commentingSettings As New YouTubeRequestSettings(appName, developerKey, Token)
Dim lcommentingRequest As New YouTubeRequest(commentingSettings)

Dim videodUrl As New Uri(String.Format("{0}/{1}",Google.GData.YouTube.YouTubeQuery.DefaultVideoUri, "BtrFZmZjalE"))
Dim video As Google.YouTube.Video = request.Retrieve(Of Google.YouTube.Video)(videoEdUrl)

Dim comm As New Comment
comm.Content = "comm text here"

lcommentingRequest.AddComment(video, comm)

现在代码可以工作了!

新的问题是:我发布后如何获得评论ID?有没有办法从上面的代码中获取它(一些服务器响应或其他东西)?...但是正如 Chris M. 建议的那样,我将为此创建另一个问题...

于 2013-07-15T21:37:55.057 回答
0

YouTube API v3 目前不支持评论。只有 v2 支持。希望将来可能有一个。

于 2013-07-15T02:11:45.747 回答