2

这是我到目前为止的代码,其中 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调用),但是当我单击玻璃操场中的菜单项时,我的代理服务器没有看到任何通知请求。有小费吗?

4

1 回答 1

2

看起来您的 callback_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 和 App Engine 入门项目,这里有一些对我设置有帮助的东西。使用日志语句,将您的应用程序部署到应用程序引擎,然后在应用程序引擎管理控制台中查看这些日志语句很有用。

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

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

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

祝你好运!

于 2013-06-16T23:55:26.283 回答