我正在尝试使用“mirror-api-subscription”事件侦听器注册 TAKE_A_NOTE。我没有运气:我可以使用“我的应用程序”启动记事本,但是,没有控制台日志表明该事件已被识别。
我想识别 TAKE_A_NOTE 函数何时发生或完成,然后处理响应。我不知道订阅是否应该在流上,或者我是否以错误的方式实现 EventListener。您的帮助将不胜感激。
我正在使用的代码是:
// 参考
// http://www.recursiverobot.com/post/57348836217/getting-started-with-the-mirror-api-using-node-js
// https://www.npmjs.org/package/mirror-api-subscription
var express = require('express')
, http = 要求('http')
, https = 要求('https')
, fs = 要求('fs')
, googleapis = 要求('googleapis')
, OAuth2Client = googleapis.OAuth2Client;
var app = express();
var oauth2Client = new OAuth2Client(process.env.MIRROR_DEMO_CLIENT_ID,
process.env.MIRROR_DEMO_CLIENT_SECRET,process.env.MIRROR_DEMO_REDIRECT_URL);
// 所有环境
app.set('端口', 8888);
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
var gotToken = 函数 () {
谷歌API
.discover('镜像', 'v1')
.execute(函数(错误,客户端){
如果(!!错误){
失败();
返回;
}
insertContact(客户端,失败,成功);
insertSubscription(客户端,失败,成功);
});
};
var insertContact = function (client, errorCallback, successCallback) {
客户
.mirror.contacts.insert({
“id”:“myapp”,
"displayName": "myApp",
“优先级”:100,
“接受命令”:[
{“类型”:“TAKE_A_NOTE”}
],
"speakableName":"我的应用"
})
.withAuthClient(oauth2Client)
.execute(函数(错误,数据){
如果(!!错误)
错误回调(错误);
别的
成功回调(数据);
});
};
var insertSubscription = function (client, errorCallback, successCallback) {
client.mirror.subscriptions.insert({
"callbackUrl":"https://localhost:7777/notification",
"收藏":"时间线",
"userToken":"001",
“验证令牌”:“秘密”,
“操作”:[“插入”]
});
}
var subscription = require('mirror-api-subscription')(
功能 () {
})
subscription.on('位置#UPDATE',
功能(通知、用户、有效负载){
console.log('更新用户 %s 的位置', user.id)
})
subscription.on('timeline#INSERT:LAUNCH',
功能(通知、用户、有效负载){
console.log('订阅时间线#INSERT:LAUNCH')
})
subscription.on('timeline#UPDATE:CUSTOM',
功能(通知、用户、有效负载){
console.log('订阅时间线#UPDATE:CUSTOM')
})
app.post('/notification', subscription.dispatcher())
app.get('/', function (req, res) {
如果(!oauth2Client.credentials){
// 生成一个允许离线访问并请求权限的 url
// 用于镜像 API 范围。
var url = oauth2Client.generateAuthUrl({
access_type: '离线',
范围:'https://www.googleapis.com/auth/glass.timeline'
});
res.redirect(url);
} 别的 {
得到令牌();
}
res.write('带节点的玻璃镜 API');
重发();
});
app.get('/oauth2callback', function (req, res) {
// 如果我们能够获取令牌,则将用户重定向回主页面
grabToken(req.query.code, 失败, function () {
res.redirect('/');
});
});
app.post('/reply', function(req, res){
console.log('replied',req);
重发();
});
变量选项 = {
键:fs.readFileSync('./ssl/key.pem'),
证书:fs.readFileSync('./ssl/cert.pem'),
};
https.createServer(options, app).listen(7777, function() {
console.log('https 监听 7777');
});
http.createServer(app).listen(app.get('port'), function () {
console.log('Express 服务器监听端口' + app.get('port'));
});