4

我正在尝试修改“mirror-quick-start”Google Glass Mirror API 示例以响应用户“REPLY”操作。

我可以使用带有 REPLY 内置操作的示例来显示可操作的卡片。

我希望用户能够通过读取科学仪器来回复,我希望能够绘制并将卡片返回给用户。

然而,我被困在第 0 步。如何获得用户“回复”的价值。

这是我订阅时间线的尝试。我可以在我的 appengine 日志中收到“订阅”消息。

def _insert_a600_subscription(self):
"""Attempt to register to a600 updates"""
subscription = {
    "collection" : 'timeline',
    "userToken" : self.userid,
    "callbackUrl":"https://myapp_on_appengine.appspot.com/logA600",
     }
try:
    self.mirror_service.subscriptions().insert(body=subscription).execute()
    logging.info("SUBSCRIBED")
except errors.HttpError, error:
    print 'An error occurred: %s' % e

我生成的卡片基于示例。

  def _insert_item_with_action(self):
"""Insert a timeline item user can reply to."""
logging.info('Inserting timeline item')
body = {
    'creator': {
        'displayName': 'Python Starter Project',
        'id': 'PYTHON_STARTER_PROJECT'
    },
    'text': 'A600 at current time:',
    'id':'a600val',
    'notification': {'level': 'DEFAULT'},
    'menuItems': [{'action': 'REPLY',
                  }],
}
# self.mirror_service is initialized in util.auth_required.
self.mirror_service.timeline().insert(body=body).execute()
return 'A timeline item with action has been inserted.'

我还为 callbackUrl 端点“logA600”创建了一个“虚拟”处理程序,如下所示。

class A600Handler(webapp2.RequestHandler):

@util.auth_required
def post(self):
    """Process the value of A600 received and return a plot"""
    logging.info("Received POST to logA600")

@util.auth_required
def get(self):
    """Process the value of A600 received and return a plot"""
    logging.info("Received GET to this logA600")

MAIN_ROUTES = [ ('/', MainHandler),('/logA600',A600Handler), ]

当我回复时间线卡片时。我的日志从不显示接收到我的处理程序的 POST 并带有预期的消息“Received POST to logA600” ..相反,我在我的 appengine 日志中得到以下信息。

2013-07-15 19:52:43.913 /logA600 302 37ms 0kb GlassAPI XX.XXX.XX.XX - - [15/Jul/2013:16:52:43 -0700] "POST /logA600 HTTP/1.1" 302 136 - "GlassAPI" "myapp_on_appengine.appspot.com" ms=37 cpu_ms=0 cpm_usd=0.000032 app_engine_release=1.8.2 instance=0XXXXXXXXXXXXXXXXXXXXXXXXd I 2013-07-15 19:52:43.889 URL being requested: https://www.googleapis.com/discovery/v1/apis/mirror/v1/rest?userIp=xx.xx.xx.xxx

在我的测试应用程序中。我可以看到时间线卡成功到达。我正在寻求有关将“REPLY”通知“订阅”到我的 callbackUrl /logA600 处理程序的帮助。

4

1 回答 1

4

在. @util.auth_required_ def post(self):_/logA600

发生这种情况的原因是因为@util.auth_required检查以验证当前用户是否已获得授权,如果未获得授权,则会将其重定向到您的 OAuth 2.0 流启动 URL。订阅通知不是授权请求。它们没有任何 cookie,就好像它们是匿名用户一样。看到这一点,@util.auth_required正在将通知重定向到身份验证页面。

于 2013-07-16T00:31:05.607 回答