使用API创建Google日历事件不会创建环聊链接
问题描述:
迄今为止,我一直在成功破解googleapis
和gapitoken
程序包,以通过API在Google日历上创建事件。所有这一切都是为了找到一种方法来编程生成一个Google Hangout链接,据我所知,这是你无法通过API完成的。根据this post,您应该能够在创建活动时启用自动创建环聊链接,这是我为该帐户完成的。使用API创建Google日历事件不会创建环聊链接
我使用的代码只能从Node.js运行,因此没有面向用户的部分。我正在使用服务帐户技术通过OAuth2.0进行身份验证。一切似乎都很好,除非创建的事件不包含名为“hangoutLink”的属性。有任何想法吗?
var moment = require('moment');
var googleapis = require('googleapis');
var GoogleToken = require('gapitoken');
var OAuth2Client = googleapis.OAuth2Client;
var token = new GoogleToken({
iss: '*******************@developer.gserviceaccount.com',
scope: 'https://www.googleapis.com/auth/calendar',
keyFile: './*****************.pem'
}, function (err) {
if (err) {
return console.log(err);
}
token.getToken(function (err, token) {
if (err) {
return console.log(err);
}
googleapis.load('calendar', 'v3', function (err, client) {
var oauthClient = new OAuth2Client('', '', '', {}, {
token_type: 'Bearer',
access_token: token
});
var now = moment().format();
client
.calendar
.events
.insert({
calendarId: 'primary',
resource: {
summary: 'hangout',
description: 'hangout',
reminders: {
overrides: {
method: 'popup',
minutes: 0
}
},
start: {
dateTime: now
},
end: {
dateTime: now
},
attendees: [{
email: '****@**********.com'
}]
}
})
.withAuthClient(oauthClient)
.execute(function (err, event) {
// event does not contain hangoutLink
console.log(event.hangoutLink);
});
});
});
});
答
设置凭据AUTH客户明确:
var oauthClient = new OAuth2Client('', '', '');
oauthClient.credentials = {
token_type: 'Bearer',
access_token: token
};
答
这不是一个完整的解决方案,但我已经通过改变约束的点点部分成功。通过事件自动创建视频群聊链接似乎是特定于帐户的设置,而不是特定于日历的设置。这意味着使用服务帐户模型创建事件不会触发环聊的创建,因为我们没有(据我所知)有办法打开自动创建环聊的Google帐户中创建服务帐户模型。
为了测试这个理论,我把一个基于OAuth的版本放在一起,它获得了一个传统的谷歌账户令牌。它看起来像这样:https://gist.github.com/drewww/5665130
它或多或少与您的示例相同,除了使用的令牌类型。在回调中,hangoutLink可靠地填充。
很明显,这不像你的例子那样干净。它取决于传统的oauth流程,并且创建事件必须的用户才能在其个人帐户设置中自动创建环聊。从用户体验角度来看,这显然非常不方便。我将尝试创建一个虚拟的Google帐户,并拥有它自己的所有环聊。
我目前通过使用允许使用令牌的弃用API来做类似的事情。看看这里是什么目前的工作:https://gist.github.com/eliperelman/b0201cbea1556ed1fe2e请注意,我对底层模块做了一些修改,以允许我传递一些额外的参数。 – Eli 2013-05-29 15:15:42
啊,是的。这些是来自开启了自动创建环聊功能的用户的普通用户令牌?我最终可能会做类似的事情。 oauth流对于没有用户干预的服务显然不太好,所以能够硬编码用户的凭证来生成令牌会很方便。我会给那个镜头。最终,这两种方法看起来都非常脆弱,谷歌随时都可能破坏它们。令人沮丧的是没有一个前沿的方式来做到这一点。 – drewww 2013-05-29 15:33:47
我希望能够在没有ClientLogin的情况下以自动化的方式工作,但目前我还没有看到路径。如果没有人类/浏览器的干预,在某些层面上似乎不可行。尽管它让我很痛苦,但我认为我也需要去ClientLogin路线。您介意分享您对ClientLogin所做的更改吗?或者只是指出我在调整的正确方向? – drewww 2013-06-25 23:00:14