2013-07-16 4 views
4

구글 유리에서 가져 오기 "REPLY"통지 나 사용자에게 응답 할 '거울 빠른 시작 "구글 유리 거울 API 예제를 수정하는 것을 시도하고있다"REPLY "조치.callbackURL 엔드 포인트

나는 행동에 내장 된 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.' 

I는 또한 callbackUrl의 endopoint 이하 「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) ] I 타임 라인 카드로 올리

. 내 기록에는 예상 된 메시지 "받은 POST가 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

. 타임 라인 카드가 성공적으로 도착했는지 알 수 있습니다. 내 callbackUrl/logA600 처리기에 "REPLY"알림 "구독"을받는 데 도움을 요청하고 있습니다.

답변

4

def post(self): 전에 /logA600에서 @util.auth_required을 제거하십시오.

@util.auth_required은 현재 사용자의 승인 여부를 확인하고 그렇지 않은 경우 OAuth 2.0 흐름 시작 URL로 리디렉션합니다. 구독 알림은 승인 된 요청이 아닙니다. 그들은 익명의 사용자 인 것처럼 쿠키없이 제공됩니다. 이걸 보면 @util.auth_required이 알림을 인증 페이지로 리디렉션하고 있습니다.

+0

감사 제니, 일단 그 장식을 제거했습니다. 내 로그에 POST 알림이 표시됩니다. 또한 위의 코드 예제에서는 구독 프록시 서버를 사용하지 않았지만 appengine URL은 "https"URL이므로 필요하지 않다는 것을 알지 못했습니다. – harijay