向节点注册Glass时间线通知
我正在尝试注册TAKE_A_NOTE与“镜像API订阅”事件侦听器。 我没有任何运气:我可以启动与“我的应用程序”注意,但是,没有控制台日志,事件已被识别。
我想知道TAKE_A_NOTE函数何时发生或完成,然后处理响应。 我不知道订阅是否应该在stream中,或者如果我以错误的方式实现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 = require('https') ,fs = require('fs') ,googleapis = require('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('port',8888); app.use(express.logger( 'dev的')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); var gotToken = function(){ googleapis .discover('mirror','v1') .execute(function(err,client){ if(!! err){ 失败(); 返回; } insertContact(客户端,失败,成功); insertSubscription(client,failure,success); }); }; var insertContact = function(client,errorCallback,successCallback){ 客户 .mirror.contacts.insert({ “id”:“myapp”, “displayName”:“myApp”, “优先”:100, “acceptCommands”:[ {“type”:“TAKE_A_NOTE”} ] “speakableName”:“我的应用程序” }) .withAuthClient(oauth2Client) .execute(function(err,data){ 如果(!! err) errorCallback(ERR); 其他 successCallback(数据); }); }; var insertSubscription = function(client,errorCallback,successCallback){ client.mirror.subscriptions.insert({ “callbackUrl”: “https://开头本地主机:7777 /通知”, “collections”:“时间表”, “userToken”: “001” “verifyToken”: “秘密”, “操作”:[ “插入”] }); } var subscription = require('mirror-api-subscription')( function(){ }) subscription.on( '#个位置更新', 函数(通知,用户,有效载荷){ console.log('用户%s的位置已更新',user.id) }) subscription.on( '#时间表INSERT:推出', 函数(通知,用户,有效载荷){ console.log('订阅时间线#INSERT:LAUNCH') }) subscription.on( '#时间表UPDATE:自定义', 函数(通知,用户,有效载荷){ console.log('订阅时间线#更新:自定义') }) 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); } else { gotToken(); } res.write('Glass Mirror API with Node'); 重发(); }); app.get('/ oauth2callback',function(req,res){ //如果我们能够获取令牌,则将用户redirect回主页面 grabToken(req.query.code,失败,function(){ res.redirect( '/'); }); }); app.post('/ reply',function(req,res){ 的console.log( '回答',REQ); 重发(); }); var options = { key:fs.readFileSync('./ ssl / key.pem'), cert:fs.readFileSync('./ ssl / cert.pem'), }; https.createServer(options,app).listen(7777,function(){ console.log('7777上的'https'); }); http.createServer(app).listen(app.get('port'),function(){ console.log('Express server listen on port'+ app.get('port')); });
你的代码至less有两个潜在的问题:
-
callbackUrl必须是可上网访问的HTTPS地址。 “本地主机”不够好,因为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”包和发现服务不同。 但是,从参考文档来看,它并不清楚它是否真的在任何地方设置了callback,并且只是在那里validationcallback并派遣到执行工作的函数。
var insertSubscription = function (client, errorCallback, successCallback) { client.mirror.subscriptions.insert({ "callbackUrl":"https://mirrornotifications.appspot.com/forward?url=callbackURL", "collection":"timeline", "userToken":"001", "verifyToken":"secret", "operation":["INSERT"] }).withAuthClient(oauth2Client).execute(function (err, data) { if (!!err) errorCallback(err); else successCallback(data); }); };
- 节点JS – Youtube API是空白的
- GoogleloginNodejs中的Android服务器端身份validation
- Google API NodeJS:calendar.events.watch获取错误push.webhookUrlNotHttps或pushWebhookBadDomain
- oauth2Client.getToken缺lessrefresh_token
- Google云端硬盘API服务帐户域内
- Google OAuth 2.0服务器到服务器,无法获取令牌
- Google API NodeJS Library OAuth2请求
- 如何撤销由OAuth从谷歌提供的令牌? 的NodeJS
- browserify错误:http.createServer不是一个函数