YouTube API v3 は恐ろしく文書化されています。私はすでに多数のバグを複数回報告しましたが、誰も反応しません。サムネイルをアップロードするには、この API を使用する必要があります。ガイドには次のように記載されています。
投稿https://www.googleapis.com/youtube/v3/thumbnails/set
認証範囲:
- https://www.googleapis.com/auth/youtubepartner
- https://www.googleapis.com/auth/youtube.upload
- https://www.googleapis.com/auth/youtube
パラメーター:
- videoId: string videoId パラメーターは、カスタム ビデオ サムネイルが提供される YouTube ビデオ ID を指定します。
まず、URL が間違っています。でなければなりませんhttps://www.googleapis.com/upload/youtube/v3/thumbnails/set
。次のコードでは、次を使用しますUnirest
。
final HttpResponse<String> response = Unirest.post("https://www.googleapis.com/upload/youtube/v3/thumbnails/set")
.header("Content-Type", "application/octet-stream")
.header("Authorization", accountService.getAuthentication(account).getHeader())
.field("videoId", videoid)
.field("thumbnail", thumbnail)
.asString();
受け取った応答:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Required parameter: videoId",
"locationType": "parameter",
"location": "videoId"
}
],
"code": 400,
"message": "Required parameter: videoId"
}
}
どうすればいいの?videoId が設定されました。API のこの部分で既にプレイした人はいますか?
リクエストを次のように変更できます
Unirest.post("https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId=" + videoid)
.header("Content-Type", "application/octet-stream")
.header("Authorization", accountService.getAuthentication(account).getHeader())
.field("mediaUpload", thumbnail)
.asString();
これにより、次のエラーがスローされます。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": "Backend Error"
}
],
"code": 503,
"message": "Backend Error"
}
}
編集: Ibrahim Ulukaya によって投稿された URL と同じ要求 (リファレンス ガイドの元の URL):
{
"error": {
"errors": [
{
"domain": "global",
"reason": "wrongUrlForUpload",
"message": "Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/youtube/v3/thumbnails/set"
}
],
"code": 400,
"message": "Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/youtube/v3/thumbnails/set"
}
}