我正在 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)