1

我有这个脚本,它列出了我最喜欢的 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 做到这一点?还是只能像@Arun Nagarajan 的github 示例中那样使用 API KEY 访问长 URL 请求的简单数据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'};
}
4

1 回答 1

2

使用 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?

于 2013-10-16T20:03:43.763 回答