coldfusion - Youtube API V3 无法识别 playlistID 过滤器

标签 coldfusion youtube-api

可能我阅读的 API 文档完全错误,但我们开始吧。

我向 https://www.googleapis.com/youtube/v3/playlistItems 发送 GET 请求。在该请求中,我有 AUTHORIZATION header 和两个参数:

"PART" : "contentDetails",
"PLAYLISTID" : "UUy8_GJ_ZQ2SHm909UJ1AK-Q"

我知道我的授权是正确的,因为我使用相同的身份验证 header 来毫无问题地获取和接收 Analytics 请求。

根据Google's docs ,必须包含 ID 或 playlistID。但当我发送此请求时,我收到“未选择过滤器”错误 400。

{ "error" : { "code" : 400,
  "errors" : [ { "domain" : "youtube.parameter",
        "location" : "",
        "locationType" : "parameter",
        "message" : "No filter selected.",
        "reason" : "missingRequiredParameter"
      } ],
  "message" : "No filter selected."
   } 
}

如果我将 PlaylistID 参数更改为 ID,则请求成功完成并返回一个空数组(空数组是因为该视频 ID 显然不存在。)

这是 API 错误吗? API 是否区分大小写? (据我所知,CFHTTP 将参数名称大写,即使我用 LCase 包装它们)

更新:

此处代码:https://gist.github.com/mborn319/13d7b9b03db10d97cd16

抱歉,我不确定如何最好地共享 200 行 CFML。

最佳答案

正如您所指出的,问题是大写的 PLAYLIST ID 参数。

正如您所看到的,这个请求工作得很好: https://www.googleapis.com/youtube/v3/playlistItems?part=contentDetails&playlistId=UUy8_GJ_ZQ2SHm909UJ1AK-Q&access_token=[putValidAccessTokenHere]

{
    "kind": "youtube#playlistItemListResponse",
    "etag": "\"F9iA7pnxqNgrkOutjQAa9F2k8HY/1T4SJss5RstUWWw6S4NPUKDWL-c\"",
    "pageInfo": {
        "totalResults": 1,
        "resultsPerPage": 5
    },
    "items": [
        {
            "kind": "youtube#playlistItem",
            "etag": "\"F9iA7pnxqNgrkOutjQAa9F2k8HY/s2P7FNuP_oK0sax4SB_fU9BVaLo\"",
            "id": "UUeEJED-0K6VNZf3zbi8n5FA7Qu41XY55_",
            "contentDetails": {
                "videoId": "Y-Ft354b_vI"
            }
        }
    ]
}

如果您使用 PLAYLISTID 进行相同的查询,您将得到错误输出: https://www.googleapis.com/youtube/v3/playlistItems?part=contentDetails&PLAYLISTID=UUy8_GJ_ZQ2SHm909UJ1AK-Q&access_token=[putValidAccessTokenHere]

{
    "error": {
        "errors": [
            {
                "domain": "youtube.parameter",
                "reason": "missingRequiredParameter",
                "message": "No filter selected.",
                "locationType": "parameter",
                "location": ""
            }
        ],
        "code": 400,
        "message": "No filter selected."
    }
}

但是很抱歉,我无法告诉您如何用小写的 CF 来发布参数(这可能吗?),但这里是一些 CF 代码的引用。他们使用旧的数据 API,但通过 get-request 获取数据。在这种情况下,参数的处理可能有所不同:http://davidosomething.com/blog/quick-access-to-the-youtube-api-with-coldfusion/

关于coldfusion - Youtube API V3 无法识别 playlistID 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925961/

相关文章:

firefox - 在Firefox中缓冲YouTube视频(API)

coldfusion - cfloop 将 "YES"插入页面

coldfusion - ColdFusion 中的 SOA 风格架构?

sql-server - 在 Coldfusion 构建器中连接到 SQL 数据库

javascript - 动态更改 youtube 上的视频 ID

ruby - YouTube api : badContent: Media type 'application/mp4' is not supported. 有效媒体类型 : [video/*, 应用程序/八位字节流]

ColdFusion 10 不会抛出任何错误,但 ColdFusion 8 会

coldfusion - 你把cfimport放在哪里

php - 使用 YouTube API v3 将视频上传到特定的 PREDETERMINED 帐户

youtube-api - 无法使用Youtube Analytics API检索视频指标