这是我到目前为止的代码,其中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
调用)但是当我单击玻璃游乐场中的菜单项时,我的代理服务器没有看到任何通知请求。有小费吗?
答案 0 :(得分:2)
看起来你的callback_url可能想要/ notify而不是/ start,但是如果不能访问你的所有项目我就无法确定。
特别是关于订阅代理,在documentation找到的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上的用户执行操作时,正确设置的自定义订阅将获得回调。如果您没有在自定义代码中看到回调,则可以备份并尝试starter project
我使用Java和App Engine入门项目,这里有一些帮助我进行设置的东西。使用日志语句,将应用程序部署到应用程序引擎,然后在应用程序引擎管理控制台中查看这些日志语句非常有用。
如果你能看到日志语句正在执行,(在我的例子中是NotifyServlet.java中的代码)那么事情进展顺利。
此时,您可以使用命令行Curl直接调用通知操作,模拟回调请求,而无需部署到应用引擎或点击玻璃硬件,从而在本地微调事物。
这样做的另一个好处是,如果您通过WireShark,Fiddler或Charles等数据包嗅探器代理curl命令,您可以轻松查看http事务并调试正在进行的操作。
祝你好运!