Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何正确订阅自定义菜单操作?_Python_Google Mirror Api_Google Glass - Fatal编程技术网

Python 如何正确订阅自定义菜单操作?

Python 如何正确订阅自定义菜单操作?,python,google-mirror-api,google-glass,Python,Google Mirror Api,Google Glass,这是到目前为止我所拥有的代码,其中get_url是一个帮助函数,它用订阅代理url包装url,该url将通知转发给我讨厌的虚拟服务器 card = { 'text': 'click ok', 'menuItems': [{ 'action': 'CUSTOM', 'id': 'ready', 'values': [{

这是到目前为止我所拥有的代码,其中get_url是一个帮助函数,它用订阅代理url包装url,该url将通知转发给我讨厌的虚拟服务器

card = {
    'text': 'click ok',
    'menuItems': [{
                      'action': 'CUSTOM',
                      'id': 'ready',
                      'values': [{
                                     'displayName': 'o',
                                     'iconUrl': 'img.jpg'
                                 }]
                  }],
}
self.mirror_service.timeline().insert(body=card).execute()
callback_url = get_url(self, '/start')
body = { # self.userid is initialized in util.auth_required.
    'collection': self.request.get('collection', 'timeline'),
    'userToken': self.userid,
    'callbackUrl': callback_url
}

我确认订阅已创建(使用
列表
调用),但当我单击窗口中的菜单项时,我的代理服务器没有看到任何通知请求。有什么建议吗

看起来您的回调url可能希望是/notify而不是/start,但如果无法访问您的所有项目,我无法确定这一点

特别是关于订阅代理,在上找到的json示例似乎不完整

首先,确保将用户令牌更改为有效的用户令牌,该用户令牌将是一系列数字。接下来,添加一个itemId和一个userActions对象。以下是对我有用的JSON:

{
"callbackUrl": "https://mirrornotifications.appspot.com/forward?url=http://example.com/path/to/test.php",
"collection": "timeline",
"itemId": "your-item-id-here",
"operation": "UPDATE",
"userToken": "your-userToken-here",
"userActions": [
    {
        "type": "PIN"
    }
]
}

确保也替换itemId。在我的设置中,我通过查看应用程序引擎日志获得了userToken和itemId

以下是处理回调的一些一般建议:

我可以确认,当Glass上的用户执行操作时,正确设置的自定义订阅将得到回调。如果在自定义代码中看不到回调,您可以备份并尝试

我使用Java和AppEngineStarter项目,下面是一些帮助我进行设置的东西。使用日志语句、将应用部署到app engine,然后在app engine管理控制台中查看这些日志语句非常有用

如果您可以看到日志语句正在执行(在我的例子中是NotifyServlet.java中的代码),那么一切都很顺利

此时,您可以通过使用命令行Curl直接调用notify操作,模拟回调请求,在本地进行微调,而无需部署到appengine或轻敲玻璃硬件

这样做的另一个好处是,如果您通过数据包嗅探器(如WireShark、Fiddler或Charles)代理curl命令,您可以轻松查看http事务并调试正在发生的事情


祝你好运

谢谢马克,看起来这就是问题所在。部署的应用程序确实向/通知发送了TIFIS。我知道我需要使用curl来模拟请求,但我认为我至少能够通过记录来自代理的http请求来查看生成了什么类型的请求。你让代理工作了吗?我不知道你所说的“他们的代理”是什么意思,你能为我扩展一下吗?是的,我让它工作了。文档不够清晰,我将更新我的答案,以包含一些关于JSON的信息,您应该发送JSON以使其正常工作。