4

ユーザーの「返信」アクションに応答するように、「ミラークイックスタート」Google Glass Mirror API の例を変更しようとしています。

REPLY 組み込みアクションを使用した例を使用して、アクション可能なカードを表示できます。

ユーザーが科学機器の読み取り値で返信できるようにしたいのですが、それをプロットしてカードをユーザーに返すことができるようにしたいと考えています。

しかし、私はステップゼロで立ち往生しています。ユーザーが「返信」した値を取得する方法。

これが、タイムラインを購読する私の試みです。appengine ログに「SUBSCRIBED」メッセージが表示されます。

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), ]

タイムラインカードに返信すると。私のログには、予想されるメッセージ「Received POST to logA600」とともにハンドラーに受信された POST が表示されません..代わりに、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

私のテストアプリで。タイムライン カードが正常に到着したことがわかります。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 に答える