2017-01-13 29 views
0

我在Python GAE應用程序中理解和實現Google Directory API的用戶觀看功能和推送通知系統(https://developers.google.com/admin-sdk/reports/v1/guides/push#creating-notification-channels)時遇到了一些麻煩。我試圖實現的是,使用我的應用的任何用戶(管理員)都能夠在自己的域中觀看用戶更改。使用Python實現Google Directory API用戶觀看

我已經驗證了我要使用的通知域並執行如下表要求:

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日誌中,我注意到每當我在域中進行「正在監視」的更改時,我都會收到來自Google API的POST請求,但卻有302代碼。我發現這是由於我在腳本app.yaml中配置了login: required,因爲該腳本正在處理請求,並且POST請求正被重定向到登錄頁面,而不是處理腳本。

0

問題

好像有一直在執行處理一些混亂。您的處理程序實際上通過向報告API端點發送POST請求來設置通知通道。由於文檔說:

要設置有關更改特定資源的消息通知通道,發送POST請求爲資源腕錶方法。

source

您應該只需要發送該請求一次設立的通道,「地址」參數應該在你的應用程序的URL將接收通知。

而且,目前還不清楚什麼是用下面的代碼發生的事情:

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

你只是打破了代碼,以便它張貼在這裏?或者它實際上是以這種方式在文件中寫入的?您應該儘可能地保留您的應用程序正在運行的代碼,以便我們可以對其進行推理。

解決方案

它從你鏈接的文檔,似乎 - 在「Receiving Notifications」一節中,你應該有「地址」內部代碼指定接收通知,將檢查POST請求主體和頭在通知推送請求上,然後對這些數據做一些事情(比如將其存儲在BigQuery中或發送電子郵件給管理員等)

+0

認爲你誤解了我的第一篇文章。我知道我的代碼設置了通知頻道。該設置似乎是成功的。之後我無法解釋數據。應用程序的日誌顯示每次在我的測試域中更改內容(添加新用戶)時都會發生某些情況,但我似乎沒有收到任何相關數據,即使我在應用程序中「偵聽」POST請求也是如此,我從來沒有得到任何回報。 – rok

+0

您每次收到POST請求時都重新建立通知通道似乎並不奇怪?或者你不檢查任何數據的請求主體? – Nick

相關問題