Intereting Posts

使用API​​创buildGoogle日历事件不会创build环聊链接

迄今为止,我一直在成功破解googleapisgapitoken包,以通过API在Google日历上创build活动。 所有这一切的目的是find一种方法来编程生成一个谷歌环聊链接,你不能通过API,据我所知。 根据这篇文章 ,你应该能够在创build事件时启用自动创build环聊链接,这是我为帐户所做的。

我使用的代码只能从Node.js运行,所以不存在面向用户的部分。 我正在使用服务帐户技术通过OAuth2.0进行身份validation。 一切似乎工作正常,除了创build的事件不包含名为“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); }); }); }); }); 

Solutions Collecting From Web of "使用API​​创buildGoogle日历事件不会创build环聊链接"

这不是一个完整的解决scheme,但通过稍微改变约束条件,我已经取得了部分成功。 与事件自动创buildvideo群聊链接似乎是特定于帐户的设置,而不是特定于日历的设置。 这意味着使用服务帐户模型来创build事件不会触发环聊的创build,因为我们没有(据我所知)有办法打开自动创build环聊在Google帐户中创build服务帐户模型。

为了testing这个理论,我把一个基于OAuth的版本放在一起,得到一个传统的谷歌账户令牌。 它看起来像这样: https : //gist.github.com/drewww/5665130

除了使用的令牌之外,它与您的示例差不多。 在callback中,hangoutLink可靠地填充。

显然,这不像你的例子那么干净。 这取决于传统的oauthstream程,创build事件的用户必须在其个人帐户设置中自动创build环聊。 从用户体验的angular度来看,这显然是非常不方便的。 我将尝试创build一个虚拟的Google帐户,并拥有自己的所有环聊。

显式将凭据设置为auth客户端:

 var oauthClient = new OAuth2Client('', '', ''); oauthClient.credentials = { token_type: 'Bearer', access_token: token };