如何使用节点js googleapis客户端上传和更新youtube频道横幅
我正在编写一个上传和更新YouTube频道横幅的应用程序。 我使用node.js和谷歌API客户端。 在官方的api文档中,没有关于node.js的示例如何发送图像内容,也没有关于callback签名的信息。这是我的代码:
var google = require('googleapis'); var OAuth2 = google.auth.OAuth2; var oauth2Client = new OAuth2(); var youtube = google.youtube({ version: 'v3' }); //Setting the credentials oauth2Client.setCredentials({ access_token: 'STORED_IN_DATABASE', refresh_token: 'STORED_IN_DATABASE', }); //Send the request youtube.channelBanners.insert({ auth: oauth2Client, //image_content }, callback);
在调用插入方法之后,我必须调用channels.update方法,它在node.js上也没有例子
从频道横幅插入 ,你必须打电话:
-
channelBanners.insert
,并从响应中获取url字段 -
channels.update
与以前检索到的URL
您还需要channels.update
请求的频道ID。 还要注意, 从频道更新 :
如果您提交更新请求,并且您的请求未为已具有值的属性指定值,则该属性的现有值将被删除。
所以你可能想调用channels.list
来获取带有brandingSettings
部分的通道对象来更新
使用google-api-nodejs-client进行 API调用:
-
channelBanners.insert
youtube.channelBanners.insert({ media: { mimeType: "image/jpeg", body: fs.createReadStream('banner.jpeg') } }, function(err, uploadResponse, response) { });
可用的mimeType
是image/jpeg
, image/png
, application/octet-stream
-
channels.list
youtube.channels.list({ part: "brandingSettings", mine: true }, function(err, channelListRsp, response) { });
-
channels.update
channelListRsp.items[0].brandingSettings.image.bannerExternalUrl = uploadResponse.url; youtube.channels.update({ part: "brandingSettings", resource: channelListRsp.items[0] }, function(err, channelUpdateResp, response) { });
更新当前用户频道列表中第一个频道横幅的完整示例:
youtube = google.youtube({ version: 'v3', auth: oauth2Client }); youtube.channelBanners.insert({ media: { mimeType: "image/jpeg", body: fs.createReadStream('banner.jpeg') } }, function(err, uploadResponse, response) { if (err) console.error("channelBanners.insert error : ", err); if (response) console.log('channelBanners.insert : ' + response.statusCode); if (uploadResponse && uploadResponse.url) { console.log("setting channel brandingSettings : " + uploadResponse.url); youtube.channels.list({ part: "brandingSettings", mine: true }, function(err, channelListRsp, response) { if (err) console.error('channels.list error : ', err); if (response) console.log('channels.list : ' + response.statusCode); if (channelListRsp && channelListRsp.items && channelListRsp.items.length > 0) { console.log("updating banner for channel id : " + channelListRsp.items[0].id); // set the url channelListRsp.items[0].brandingSettings.image.bannerExternalUrl = uploadResponse.url; //update channel brandingSettings youtube.channels.update({ part: "brandingSettings", resource: channelListRsp.items[0] }, function(err, channelUpdateResp, response) { if (err) console.error('channels.update error : ', err); if (response) console.log('channels.update : ' + response.statusCode); if (channelUpdateResp) console.log(channelUpdateResp); }); } }); } });
- 我如何通过NodeJs在谷歌云中设置数据存储区索引configuration?
- Google云端硬盘API服务帐户域内
- nodejs googleapis,authClient.request不是一个函数
- GoogleloginNodejs中的Android服务器端身份validation
- OAuth2Client应该创build每个请求或caching每个用户?
- 如何使用google-api-nodejs-client为nodejs发送带有gmail api附件的邮件
- 在Google云端存储中使用nodejs gcloud api移动/重命名文件夹
- Google API NodeJS Library OAuth2请求
- 从NodeJS(或云function)获取GCE实例的临时IP