使用 Meteor 和 percolate 的 google-api 包访问 Youtube API
Accessing the Youtube API using Meteor and percolate's google-api package
我刚刚开始我的第一个流星项目,我正在尝试访问 youtube 的开发者 API。
我已经使用 google 创建了开发者凭证,并且我已经包含了 accounts-ui 和 percolate 的 google-api 包。我可以使用 accounts-ui 成功登录,这意味着我的 OAuth 设置似乎正在运行。
然后我尝试 运行 在客户端上做这样的事情:
GoogleApi.get('youtube/v3/search',{
part : 'snippet',
q : 'cats',
maxResults : 25
},
function(err,data) {
!err ? console.log(data) : console.log(err);
});
我在控制台上收到以下错误:
Error: failed [403] { "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", "message": "Insufficient Permission" } ], "code": 403, "message": "Insufficient Permission" } }
我不确定我是否错误地调用了该函数,因为我似乎找不到 GoogleApi.get() 函数的任何用法示例(而且我是流星初学者),还是我的开发者账户设置不正确,或者什么。
非常感谢您提供的任何帮助或指示。谢谢!
更新:
使用下面 FullStack 的建议,我的最终代码看起来像这样:
var url = "https://www.googleapis.com/youtube/v3/search";
var params = {
key: {Google API Key}
part: "snippet",
q: searchTerm,
maxResults: 25
};
Meteor.http.get(url, {params: params}, function (err, result) {
console.log(result.statusCode, result.data);
var retdata = result.data;
Session.set("youtubeSearchItems", retdata.items);
});
我建议不要使用 google-api 包,而是自己进行 HTTP 调用。下面是示例代码:
var url = "https://www.googleapis.com/youtube/v3/search";
var options = {
'headers' : {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + yourAccessToken,
'X-JavaScript-User-Agent': "Google APIs Explorer"
},
'params' : {
part : 'snippet',
q : 'cats',
maxResults : 25
}
};
var searchResult = HTTP.get(url, options);
确保安装了 HTTP 包:meteor add http
有关详细信息,请参阅 official Meteor docs on HTTP。
Percolate 的软件包运行良好。问题是你有 insufficient permissions
正如它所说。要解决此问题,您必须添加您希望使用的 API 所需的范围。
if (Meteor.isClient){
var scopes = [
'https://www.googleapis.com/auth/youtube',
];
Accounts.ui.config({
requestPermissions: {google: scopes}
});
}
我不知道您指的是哪个 YouTube API,所以我选择了数据版。还有分析和直播。我从这个页面得到了以上范围:
https://developers.google.com/youtube/v3/guides/auth/client-side-web-apps
我刚刚开始我的第一个流星项目,我正在尝试访问 youtube 的开发者 API。
我已经使用 google 创建了开发者凭证,并且我已经包含了 accounts-ui 和 percolate 的 google-api 包。我可以使用 accounts-ui 成功登录,这意味着我的 OAuth 设置似乎正在运行。
然后我尝试 运行 在客户端上做这样的事情:
GoogleApi.get('youtube/v3/search',{
part : 'snippet',
q : 'cats',
maxResults : 25
},
function(err,data) {
!err ? console.log(data) : console.log(err);
});
我在控制台上收到以下错误:
Error: failed [403] { "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", "message": "Insufficient Permission" } ], "code": 403, "message": "Insufficient Permission" } }
我不确定我是否错误地调用了该函数,因为我似乎找不到 GoogleApi.get() 函数的任何用法示例(而且我是流星初学者),还是我的开发者账户设置不正确,或者什么。
非常感谢您提供的任何帮助或指示。谢谢!
更新: 使用下面 FullStack 的建议,我的最终代码看起来像这样:
var url = "https://www.googleapis.com/youtube/v3/search";
var params = {
key: {Google API Key}
part: "snippet",
q: searchTerm,
maxResults: 25
};
Meteor.http.get(url, {params: params}, function (err, result) {
console.log(result.statusCode, result.data);
var retdata = result.data;
Session.set("youtubeSearchItems", retdata.items);
});
我建议不要使用 google-api 包,而是自己进行 HTTP 调用。下面是示例代码:
var url = "https://www.googleapis.com/youtube/v3/search";
var options = {
'headers' : {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + yourAccessToken,
'X-JavaScript-User-Agent': "Google APIs Explorer"
},
'params' : {
part : 'snippet',
q : 'cats',
maxResults : 25
}
};
var searchResult = HTTP.get(url, options);
确保安装了 HTTP 包:meteor add http
有关详细信息,请参阅 official Meteor docs on HTTP。
Percolate 的软件包运行良好。问题是你有 insufficient permissions
正如它所说。要解决此问题,您必须添加您希望使用的 API 所需的范围。
if (Meteor.isClient){
var scopes = [
'https://www.googleapis.com/auth/youtube',
];
Accounts.ui.config({
requestPermissions: {google: scopes}
});
}
我不知道您指的是哪个 YouTube API,所以我选择了数据版。还有分析和直播。我从这个页面得到了以上范围:
https://developers.google.com/youtube/v3/guides/auth/client-side-web-apps