我有这个脚本,它列出了我最喜欢的YouTube视频,使用Oauth和YTB API v2。
现在我想对 YTB DATA API V3 做同样的事情,谁知道一个简单的步骤是 YTB ANALYTICS API V1。
所以我正在寻找可以让我进入 V3 中的收藏夹的 URL。var URL = "https://www.googleapis.com/youtube/v3/"
而不是
//var URL = "http://gdata.youtube.com/feeds/api/users/default/favorites?v=2";
有没有办法使用 DATA API v3 做到这一点?或者是否只能使用API KEY的长URL请求访问简单数据,如@Arun Nagarajan的github示例 var url = 'https://www.googleapis.com/youtube/v3/activities?'
+'part=snippet&channelId=UC_x5XG1OV2P6uZZ5FSM9Ttw&maxResults=20&publishedBefore=2013-02-25T00:00:00.0Z'
+'&key='+API_KEY;
以下是我想与 YTB API v3 一起使用的代码部分。
//var URL = "http://gdata.youtube.com/feeds/api/users/default/favorites?v=2"; works
var URL = "https://www.googleapis.com/youtube/v3/" // cant find it
function getFavoriteVideos()
{
var data = UrlFetchApp.fetch(URL, googleOAuth_()).getContentText();
var xmlOutput = Xml.parse(data, false);
var favorites = xmlOutput.getElement().getElements('entry');
Logger.log("a" + favorites.length.toString())
var a = favorites.length.toString()
for(var i = 0; i < favorites.length; i++)
{
favorites[i].getElement('title').getText()
Logger.log(favorites[i].getElement('title').getText())
}
}
身份验证
var NAME = 'youtube';
var SCOPE = 'http://gdata.youtube.com';
function googleOAuth_() {
var oAuthConfig = UrlFetchApp.addOAuthService(NAME);
oAuthConfig.setRequestTokenUrl('https://www.google.com/accounts/OAuthGetRequestToken?scope='+SCOPE);
oAuthConfig.setAuthorizationUrl('https://www.google.com/accounts/OAuthAuthorizeToken');
oAuthConfig.setAccessTokenUrl('https://www.google.com/accounts/OAuthGetAccessToken');
oAuthConfig.setConsumerKey('anonymous');
oAuthConfig.setConsumerSecret('anonymous');
return {oAuthServiceName:NAME, oAuthUseToken:'always'};
}
使用 oAuthConfig 类的问题在于它基于 oAuth1 而不是 oAuth2。
Google-Apps-Scirpt-Issues中有一个升级到oAuth2的请求:https://code.google.com/p/google-apps-script-issues/issues/detail?id=2580
我最初忘了提到SO中有一篇关于将oAuth2与GAS一起使用的帖子,Arun在他的回应中引用了他在GitHub中提供的示例:如何使用oauth 2.0从appscript授权到Google API?