登录用户访问Meteor项目中的YouTube API



我正在进行一个新的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调用。

相关内容

  • 没有找到相关文章

最新更新