1

我正在嘗試使用服務帳戶來訪問組的成員。我已經驗證了我可以使用正常的OAuth2令牌代表用戶執行此操作,呼叫https://www.googleapis.com/admin/directory/v1/groups/{group}/members和範圍https://www.googleapis.com/auth/admin.directory.group.readonly如何使用服務帳戶訪問組成員?

我希望做同樣的服務帳戶,我已經添加了服務帳戶的電子郵件地址作爲組成員,並證實查看會員權限設置爲「組的所有成員,所有組織成員」。

當我問成員的名單,我收到此錯誤:

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "forbidden", 
    "message": "Not Authorized to access this resource/api" 
    } 
    ], 
    "code": 403, 
    "message": "Not Authorized to access this resource/api" 
} 
} 

什麼我需要做的,授權此服務帳戶看組?

+0

在開始或結束後重新制定您的問題是一種好的做法。確保你有問題在你的問題的帖子;) –

+1

發表問題。 –

+1

服務帳戶可能是一個令人困惑的術語。您的意思是您在API控制檯中創建的服務帳戶?或者它只是一個通用的用戶帳戶? – Emily

回答

0

您可以按照以下API文檔頁面中列出的步驟創建服務帳戶並執行全域授權,請記住您需要任何屬於該組成員的用戶的電子郵件地址( USEREMAIL在下面的代碼片段),這樣的服務帳戶可以代表他們行事:

https://developers.google.com/admin-sdk/directory/v1/guides/delegation

頁包括如何實例化一個com.google.api.services.admin一個Java和Python的例子使用在Google Developers Console上創建的服務帳戶和私鑰的.directory.Directory對象

GoogleCredential credential = new GoogleCredential.Builder() 
    .setTransport(httpTransport) 
    .setJsonFactory(jsonFactory) 
    .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
    .setServiceAccountScopes(DirectoryScopes.ADMIN_DIRECTORY_USERS) 
    .setServiceAccountUser(userEmail) 
    .setServiceAccountPrivateKeyFromP12File(
     new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH)) 
    .build(); 
+0

看起來很有希望。我在「管理API客戶端訪問」下添加了我的服務帳戶客戶端ID,現在我認爲我被困在下一步。以下是使用密鑰內容的簡短代碼示例;第一次調用G + API時,我知道關鍵是好的,第二次繼續失敗:https://gist.github.com/migurski/9b8e44da1536c5713e0a –

+0

什麼是client_email?這是服務帳戶電子郵件或服務帳戶代表他們的用戶的電子郵件 – omerio

+0

這是服務帳戶電子郵件,看起來像'nnnnnnn-nnnnnnn @ developer.gserviceaccount.com' –

相關問題