我正在进行一个新的Meteor项目,该项目涉及用户通过OAuth使用他们的Google帐户登录网站(我使用的是Meteor帐户-Google包),当登录时,我需要他们能够从YouTube Analytics API为他们的YouTube频道查看一些数据。到目前为止,我试图获得的数据是他们的每日总浏览量,然后我希望在指定的时间段内将其显示在图表上。
我已经将以下范围添加到我的帐户谷歌登录系统:
Meteor.loginWithGoogle({
requestPermissions: ['https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile', 'https://www.googleapis.com/auth/yt-analytics.readonly', 'https://www.googleapis.com/auth/youtube.readonly'],
requestOfflineToken: true,
forceApprovalPrompt: true,
loginStyle: "popup"
});
这一切似乎都运行得很好,一旦用户登录到网站并授予网站访问权限,我就可以在我的MongoDB数据库中看到必要的信息。在user.services.google下,我现在可以看到它有accessToken、idToken、expiresAt、refreshToken等。
我还决定使用谷歌api nodejs客户端,通过Meteor的metrohacks:npm包来实现它。我正在使用它来刷新令牌(正如在这个SO回答中所看到的,我觉得很有帮助)。
使用YouTube Analytics API文档页面上的"Try It"API资源管理器,我可以通过以下请求获得我要查找的数据类型:
GET https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2015-10-01&end-date=2015-10-31&metrics=views&dimensions=day&sort=-day&key={YOUR_API_KEY}
现在,我完全陷入了困境,真的不确定该何去何从。我如何在我的网站上实现这一点?我已经尝试了很长一段时间,但我所尝试的一切都不起作用,也没有真正的方向。如果有人愿意帮忙,我将不胜感激。我是Meteor/JS/API的新手,所以非常感谢任何信息/示例,尤其是对noob友好的东西!)
一种方法是使用一个方法和http包:https://atmospherejs.com/meteor/http
查看您提供的文档,您可以尝试以下操作:
在服务器端上定义您的方法
// server-side
Meteor.methods({
getYoutubeReports: function(channelId, accessToken, params) {
params.ids = "channel=="+ channelId;
params.key = accessToken;
return HTTP.get("https://www.googleapis.com/youtube/analytics/v1/reports", {
params: params
});
}
});
然后,您可以使用从身份验证(即CHANNEL_ID_OF_MY_USER
&ACCESS_TOKEN_OF_MY_USER
)中获得的数据在客户端调用它
// client-side
var reports,
myParams = {
"start-date": "2015-10-01",
"end-date": "2015-10-31",
"metrics": "views",
"dimensions": "day",
"sort": "-day"
};
Meteor.call('getYoutubeReports', CHANNEL_ID_OF_MY_USER, ACCESS_TOKEN_OF_MY_USER, params, function(error, result) {
// store or do stuff with the result of the HTTP request here
console.log(result);
});
欢迎根据用户需要自定义myParams
!
如果你想了解更多关于如何使用HTTP请求的技巧(对于调用外部API非常有用),The Meteor Chef写了一篇非常好的文章:https://themeteorchef.com/snippets/using-the-http-package/
我希望它能有所帮助!
我最终使用了percente:google-api包来处理我的api调用。