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

标签 python google-mirror-api google-glass

这是我到目前为止的代码,其中 get_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
}

我确认已创建订阅(使用 list 调用),但是当我单击 glass Playground 中的菜单项时,我的代理服务器没有看到任何通知请求。有小费吗?

最佳答案

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

特别是关于订阅代理,可以在 documentation 找到 json 示例。好像不完整。

首先,请确保将用户 token 更改为有效的用户 token ,该 token 是一系列数字。接下来,添加一个 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 上的用户执行操作时,正确设置的自定义订阅将收到回调。如果您在自定义代码中没有看到回调,您可以备份并尝试 starter project

我使用 Java 和 App Engine 入门项目,以下是一些帮助我完成该设置的内容。使用日志语句、将应用程序部署到 App Engine,然后在 App Engine 管理控制台中查看这些日志语句非常有用。

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

此时,您可以使用命令行 Curl 直接调用通知操作来在本地进行微调,模拟回调请求,而无需部署到应用程序引擎或点击玻璃硬件。

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

祝你好运!

关于python - 如何正确订阅自定义菜单操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17129429/

相关文章:

Python PIL 减少字母间距

java - Google Glass 的 Hello World 程序 - 一步一步

android - 如何添加自定义语音识别屏幕

android - 来自 Google Glass 的截屏

google-glass - 我如何在 Google APIs 控制台看到 Google Mirror API

python - 如何在不使用 num2word 库的情况下将数字转换为单词?

python - Django - 在不访问数据库的情况下访问外键值

python - Keras:权重共享不起作用

exif - 有没有办法在通过 Glass 拍摄的图像中默认包含位置信息?

google-mirror-api - 获取更新的时间线项目的唯一 ID