如何使用服务配置Meteor包重新定义OAuth范围?

时间:2015-12-18 11:39:57

标签: meteor google-api

我将service-configuration软件包添加到我的Meteor应用程序中,我正在尝试重新定义Google的auth范围,特别是让应用程序请求访问日历。默认设置为

ServiceConfiguration.configurations.update({}, {
  service: 'google',
  clientId: CLIENT_ID,
  secret: CLIENT_SECRET,
  loginStyle: 'redirect'
}, {
  upsert: true
});

所以我试图做的是为选项对象添加额外的属性:

ServiceConfiguration.configurations.update({}, {
  service: 'google',
  clientId: CLIENT_ID,
  secret: CLIENT_SECRET,
  loginStyle: 'redirect',
  requestPermissions: [
    'https://www.googleapis.com/auth/calendar',
    'https://www.googleapis.com/auth/calendar.readonly'
  ]
}, {
  upsert: true
});

它不起作用。文档很少。任何人都可以有一个方向,以便我可以通过Meteor应用程序中的Google API访问用户的日历数据吗?

我不使用Google的官方Node包,也不打算这样做。我相信通过透明的HTTP请求可以更轻松地从应用程序访问他们的API。

1 个答案:

答案 0 :(得分:2)

查看所涉及的两个软件包(googleaccounts-google),您似乎将选项放在错误的位置。它们不是从数据库中的服务配置中读取的,而是直接从第一个参数调用到loginWithGoogle函数调用。

也就是说,以下内容应该可以工作(不会更改数据库中的服务配置):

Meteor.loginWithGoogle({
    loginStyle: 'redirect',
    requestPermissions: [
        'https://www.googleapis.com/auth/calendar',
        'https://www.googleapis.com/auth/calendar.readonly'
    ]
}, function() { console.log("login successful); });

更新:

如果您使用loginButtons模板,则更加容易,如documentation中所述:

Accounts.ui.config({
  requestPermissions: {
    google: [
        'https://www.googleapis.com/auth/calendar',
        'https://www.googleapis.com/auth/calendar.readonly'
    ]
  }
});