登录用户在 Meteor 项目中访问 YouTube API
Accessing YouTube API in Meteor project for logged in user
我正在开发一个新的 Meteor 项目,该项目涉及用户使用他们的 Google 帐户通过 OAuth 登录网站(为此我使用 Meteor accounts-google 包)和登录时,我需要他们能够从 YouTube 分析 API 中查看他们 YouTube 频道的一些数据。截至目前,我正在尝试获取的数据是他们的每日总浏览量,然后我希望在指定时间段内将其显示在图表上。
我已将以下范围添加到我的帐户-google 登录系统:
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等
我还决定使用 google api nodejs client by implementing it through the meteorhacks:npm package for Meteor. I am using this to refresh tokens (as seen in this SO answer 我觉得有用的。
使用 YouTube 分析 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/APIs 的新手,所以非常感谢任何 information/examples,尤其是新手友好的东西! ;)
一种方法是使用方法和 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),Meteor Chef 写了一篇非常好的文章:https://themeteorchef.com/snippets/using-the-http-package/
希望对您有所帮助!
我最终使用 percolate:google-api 包来处理我的 API 电话。
我正在开发一个新的 Meteor 项目,该项目涉及用户使用他们的 Google 帐户通过 OAuth 登录网站(为此我使用 Meteor accounts-google 包)和登录时,我需要他们能够从 YouTube 分析 API 中查看他们 YouTube 频道的一些数据。截至目前,我正在尝试获取的数据是他们的每日总浏览量,然后我希望在指定时间段内将其显示在图表上。
我已将以下范围添加到我的帐户-google 登录系统:
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等
我还决定使用 google api nodejs client by implementing it through the meteorhacks:npm package for Meteor. I am using this to refresh tokens (as seen in this SO answer 我觉得有用的。
使用 YouTube 分析 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/APIs 的新手,所以非常感谢任何 information/examples,尤其是新手友好的东西! ;)
一种方法是使用方法和 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),Meteor Chef 写了一篇非常好的文章:https://themeteorchef.com/snippets/using-the-http-package/
希望对您有所帮助!
我最终使用 percolate:google-api 包来处理我的 API 电话。