2017-02-08 159 views
0

我們構建了一個嘗試使用服務帳戶訪問Google Calendar API的應用程序。我們自己管理應用程序,但我們嘗試訪問的日曆位於單獨的GSuite帳戶中。我們讓GSuite管理員按照here的步驟允許基於客戶端ID和「https://www.googleapis.com/auth/calendar.readonly」身份驗證範圍訪問我們的應用。Google Calendar API FreeBusy使用服務帳戶訪問

現在,當使用服務帳戶嘗試訪問用戶日曆數據時,我對如何正確格式化請求感到困惑。具體來說,如果我不包含「sub」參數,請求的作用就在於我獲得了一個令牌,並且我可以繼續進行後續請求以訪問日曆。但是,在隨後的請求中,我在用戶日曆中返回了錯誤,指示未找到,即我沒有訪問權限。下面是要求:

String jwtClaimset = '{'+ 
          '"iss":"[email protected]",'+ 
          '"sub":"[email protected]",'+ 
          '"scope":"https://www.googleapis.com/auth/calendar.readonly",'+ 
          '"aud":"https://www.googleapis.com/oauth2/v4/token",'+ 
          '"exp":'+expTime+','+ 
          '"iat":'+requestTime+ 
          '}'; 

然而,然後如果我包括來自GSuite特定電子郵件/用戶名帳戶「冒充」,我不能夠在所有要求的道理,我提出與下面錯誤:

"error_description": "Client is unauthorized to retrieve access tokens using this method."

所以我的問題是,我需要的子參數來訪問任何用戶的日曆中GSuite如果這樣做,你知道爲什麼被呈現的錯誤?

回答

2

我不知道發生了什麼,也許它只是需要時間讓GSuite權限/訪問權限更新,但現在這是行得通的。

需要注意的是,我們使用的是sub參數及其工作原理(因爲我們懷疑我們需要)。

+0

嗨,喬治。我正在嘗試在NodeJs中編寫一些可以列出用戶事件並在其日曆中創建事件的API。我們組織的郵件帳戶和日曆在gsuite上。我已經嘗試了基於JWT的身份驗證的nodejs的googleapis包,但未顯示主要用戶的任何事件。不確定服務帳戶憑據如何模擬其他用戶帳戶。你能指導我完成這個過程嗎? –

相關問題