aug*_*uag 5 javascript node.js google-glass google-mirror-api google-api-nodejs-client
我正在尝试使用“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 = require('http')
, https = 要求('https')
, fs = 要求('fs')
, googleapis = require('googleapis')
, OAuth2Client = googleapis.OAuth2Client;
var 应用程序 = 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());
应用程序.use(应用程序.路由器);
var getToken = 函数 () {
谷歌API
.discover('镜像', 'v1')
.execute(函数(错误,客户端){
如果(!!错误){
失败();
返回;
}
insertContact(客户端、失败、成功);
insertSubscription(客户端、失败、成功);
});
};
var insertContact = function (client, errorCallback, successCallback) {
客户
.mirror.contacts.insert({
“id”:“myapp”,
“显示名称”:“我的应用程序”,
“优先级”:100,
“接受命令”:[
{“类型”:“TAKE_A_NOTE”}
],
“speakableName”:“我的应用程序”
})
.withAuthClient(oauth2Client)
.execute(函数(错误,数据){
如果(!!错误)
错误回调(错误);
别的
成功回调(数据);
});
};
var insertSubscription = function (client, errorCallback, successCallback) {
客户端.镜像.订阅.插入({
"callbackUrl":"https://localhost:7777/notification",
"collection":"时间轴",
“用户令牌”:“001”,
"verifyToken":"秘密",
“操作”:[“插入”]
});
}
var 订阅 = require('mirror-api-subscription')(
功能 () {
})
订阅.on('位置#更新',
函数(通知、用户、有效负载){
console.log('用户 %s 的位置已更新', user.id)
})
subscription.on('时间线#INSERT:LAUNCH',
函数(通知、用户、有效负载){
console.log('订阅时间线#INSERT:LAUNCH')
})
subscription.on('时间线#更新:自定义',
函数(通知、用户、有效负载){
console.log('订阅时间线#UPDATE:CUSTOM')
})
app.post('/通知', subscription.dispatcher())
app.get('/', 函数 (req, res) {
如果(!oauth2Client.credentials){
// 生成允许离线访问并请求权限的url
// 用于镜像 API 范围。
var url = oauth2Client.generateAuthUrl({
access_type: '离线',
范围:'https://www.googleapis.com/auth/glass.timeline'
});
res.redirect(url);
} 别的 {
得到令牌();
}
res.write('带有 Node 的 Glass Mirror API');
重发();
});
app.get('/oauth2callback', 函数 (req, res) {
// 如果我们能够获取令牌,则将用户重定向回主页
scrapToken(req.query.code, 失败, 函数 () {
res.redirect('/');
});
});
app.post('/reply', function(req, res){
console.log('已回复',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'));
});
您的代码至少存在两个潜在问题:
CallbackUrl 必须是可访问 Internet 的 HTTPS 地址。“Localhost”还不够好,因为 Google 的服务器需要能够解析它。如果您有公共 IP 地址,则可以提供 IP 地址,或者使用隧道。
您不对调用的结果执行任何操作client.mirror.subscriptions.insert()。通常,您应该以与调用 相同的方式来调用它client.mirror.contacts.insert(),即将它与withAuthClient()和链接起来execute()。execute()如果您希望它向镜像服务注册,则需要致电。有关“googleapis”包和发现服务的文档,请参阅https://github.com/google/google-api-nodejs-client/
可能与 #2 有关,但我不熟悉您包含的软件包require('mirror-api-subscription'),它的处理方式似乎与它提供的“googleapis”软件包和发现服务不同。然而,从它的参考文档来看,并不清楚它实际上在任何地方设置了回调,并且只是在那里验证回调并分派到执行工作的函数。
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |