Я создаю небольшую услугу с помощью API зеркала для GAE, используя декораторы из клиентской библиотеки API Google для Python для автоматизации танка OAuth. У меня возникли проблемы с обработкой обработчика уведомлений для подписки, и я просто понял, что, удалив декоратор из метода POST, который обрабатывает ping подписки, он работает (то есть я могу ввести метод и проверить JSON).Использование декодера клиента Python в обратном вызове подписки
Это имеет смысл, так как Mirror API вызывает обратный вызов, а не пользователь.
Но я все же должен сделать авторизованный запрос для обработки полезной нагрузки, что означает, что мне понадобится авторизованный служебный объект, поэтому мне нужно вручную записать OAuth для этой части или автоматически будет библиотека получить учетные данные для пользователя, вызвавшего уведомление?
Благодарим за помощь!
# leaving the decorator on the method causes it not to work
# @decorator.oauth_required
def post(self):
logging.info('PAYLOAD %s' % self.request.body)
# get the authorized object created by the decorator
# this isn't going to work since it's dependent on the decorator
http = decorator.http()
# handle the inbound JSON payload from the body of the request via POST
data = json.load(self.request.body)
item_id = data["itemId"]
user_id = data["userToken"]
update_item = mirror_api_service.timeline().get(id=item_id).execute(http=http)
for user_action in data.get('userActions',[]):
if user_action.get('type') == 'LAUNCH':
speakable_text = "Echoing your speech input: " % update_item["text"]
card_content = {
"text": speakable_text,
"speakableText": speakable_text,
"notification": { "level": "DEFAULT" }
}
try:
mirror_api_service.timeline().insert(body=card_content).execute(http=http)
self.response.set_status(200)
except errors.HttpError, error:
logging.warn('PROBLEM: ' + str(error))
# only process the first userAction
break
Получил это ... как я и предполагал. Я собирался скопировать документы, но я не знал, будет ли клиент lib делать это самостоятельно. Спасибо, Дженни! – user2302078