我正在向youtube api发送删除请求,但我收到401错误(未经授权)。我不知道为什么。我的密钥设置正确,我可以访问 youtube 频道的分析。这是我在单击按钮时触发的代码
jQuery.ajax({
type: 'DELETE',
// must set api key
url: 'https://www.googleapis.com/youtube/v3/videos?id='+ thisUniqueID + '&key={<?php echo $oAuth2Key; ?>}',
});
我已使用警报来检查我的身份验证密钥是否已正确设置(如下所示)。
alert('<?php echo $oAuth2Key; ?>');
我可以在返回的地址中看到错误,表明 url 是正确的。可能是什么问题?
看起来我需要一个刷新令牌。这是直接来自文档:如果您提交访问具有过期访问令牌的受保护资源的请求,API 将返回 HTTP 401 响应代码(未经授权)。以下部分介绍如何刷新访问令牌。
有没有一种简单的方法可以在发送删除请求的同时检索刷新令牌?如果没有,是否有一种简单的方法可以在不需要客户端 ID/客户端密钥等的情况下检索一个。
我不知何故得到了一个用于分析的密钥,但是当我删除视频时,该密钥无效。
我建议您改用Data API v3。
是的,您可以执行 AJAX 调用。这是视频>删除电话。
删除 https://www.googleapis.com/youtube/v3/videos?id=VIDEO_ID&key={YOUR_API_KEY}
您可以在以下位置找到有关使用授权的文档:https://developers.google.com/youtube/v3/guides/authentication
您使用 API 密钥访问公共数据!
由于您要删除视频,因此必须使用access_token。access_token的有效期很短(1 小时)。您可以通过使用refresh_token请求另一个来获取一个新的。
存储refresh_token,因为它在被撤销之前一直有效。
顺便说一句。
Maybe use client.js, to handle the authorization for your requests ?
For JS, by adding:
<script src="https://apis.google.com/js/client.js?onload=googleApiClientReady"></script>
一般文档位于:https://developers.google.com/api-client-library/javascript/start/start-js
YouTube的代码示例位于:https://developers.google.com/youtube/v3/code_samples/javascript
有关视频删除方法的参考,请参阅:https://developers.google.com/youtube/v3/docs/#videos
列出的方法是:插入,列出,删除,更新,速率和获取评级。
删除方法可能是(这未使用有效的视频 ID 进行测试):
var requestOptions = {
id: '012345678901', // replace VIDEOID
part: 'id'
};
var request = gapi.client.youtube.videos.delete (requestOptions);
request.execute(function(response) {
console.log("RESPONSE: " + response);
});
使用不存在的 videoId 的响应是:
[
{
"error": {
"code": -32500,
"message": "Video not found",
"data": [
{
"domain": "youtube.video",
"reason": "videoNotFound",
"message": "Video not found",
"locationType": "parameter",
"location": "id"
}
]
},
"id": "gapiRpc"
}
]