2017-01-13 2 views
0

У меня возникли проблемы с пониманием и внедрением функции просмотра пользователей API Google Directory и системой push-уведомлений (https://developers.google.com/admin-sdk/reports/v1/guides/push#creating-notification-channels) в моем приложении Python GAE. Я пытаюсь добиться того, что любой пользователь (администратор), который использует мое приложение, сможет просматривать пользовательские изменения в своем собственном домене.Реализация пользователей API каталога Google с помощью Python

Я проверил домен я хочу использовать для отправки уведомлений и реализован запрос часов следующим образом:

directoryauthdecorator = OAuth2Decorator(
approval_prompt='force', 
client_id='my_client_id', 
client_secret='my_client_secret', 
callback_path='/oauth2callback', 
scope=['https://www.googleapis.com/auth/admin.directory.user']) 

class PushNotifications(webapp.RequestHandler): 
     @directoryauthdecorator.oauth_required 
     def get(self): 
      auth_http = directoryauthdecorator.http() 
      service = build("admin", "directory_v1", http=auth_http) 

      uu_id=str(uuid.uuid4()) 
      param={} 
      param['customer']='my_customer' 
      param['event']='add' 
      param['body']={'type':'web_hook','id':uu_id,'address':'https://my-domain.com/pushNotifications'} 
      watchUsers = service.users().watch(**param).execute() 

application = webapp.WSGIApplication(
         [ 
          ('/pushNotifications',PushNotifications), 
          (directoryauthdecorator.callback_path, directoryauthdecorator.callback_handler())], 
         debug=True) 

Теперь, принимающая часть того, что я не понимаю. Когда я добавляю пользователя в свой домен и проверяю журналы запросов приложения, я вижу некоторую активность, но нет доступных данных. Как мне подойти к этой части?

Любая помощь будет оценена по достоинству. Благодарю.

ответ

0

Удалось выяснить. В журналах App Engine я заметил, что каждый раз, когда я делаю изменения, которые «смотрят», в моем домене я получаю запрос POST из API Google, но с кодом 302. Я обнаружил, что это произошло из-за того, что у меня был login: required, сконфигурированный в моем app.yaml для скрипта, который обрабатывал запросы, и запрос POST перенаправлялся на страницу входа, вместо сценария обработки.

0

Проблема

Похоже, там была некоторая путаница в реализации обработчика. Фактически ваш обработчик настроил канал уведомлений, отправив запрос POST в конечную точку API отчетов. Как говорится в документах:

Чтобы настроить канал уведомлений о сообщениях об изменениях на конкретном ресурсе, отправьте запрос POST в метод просмотра ресурса.

source

Вы должны только отправить этот запрос один раз, чтобы установить канал, а параметр «адрес» должен быть URL в вашем приложении, которые будут получать уведомления.

Кроме того, не ясно, что происходит со следующим кодом:

param={} 
param['customer']='my_customer' 
param['event']='add' 

Вы просто разорвать код для того, чтобы разместить его здесь? Или это так написано в файле? Вы должны фактически сохранить, насколько это возможно, код, который работает в вашем приложении, чтобы мы могли рассуждать об этом.

Раствор

кажется из документации вы связаны - в разделе «Receiving Notifications», что вы должны иметь код внутри «адрес» указывается для получения уведомлений, которые осмотрят POST тело запроса и заголовки на запрос уведомления уведомления, а затем сделать что-то с этими данными (например, хранить его в BigQuery или отправить электронное письмо администратору и т. д.)

+0

Подумайте, вы неправильно поняли мой первоначальный пост. Я знаю, что мой код настраивает канал уведомлений. Настройка кажется успешной. После этого у меня возникли проблемы с интерпретацией данных.Журналы приложения показывают, что что-то происходит каждый раз, когда я меняю материал (добавляю нового пользователя) в свой тестовый домен, но, похоже, я не возвращаю соответствующие данные и даже не хочу слушать запросы POST в моем приложении , Я никогда ничего не получаю. – rok

+0

Не кажется странным, что вы повторно устанавливаете канал уведомления каждый раз, когда получаете POST-запрос? Или вы не проверяете тело запроса на какие-либо данные? – Nick

 Смежные вопросы

  • Нет связанных вопросов^_^