Я пытаюсь подключить G Suite, используя делегирование по всему домену, с учетной записью службы, чтобы получить список групп.
После этого Руководство Google вот мои шаги:
- Аутентификация учетной записи с использованием JWT с необходимыми областями, которая возвращает токен доступа, который я проверяю здесь
Информация о токене выглядит нормально:
{
"issued_to": "MY_CLIENT_ID",
"audience": "MY_CLIENT_ID",
"scope": "https://www.googleapis.com/auth/admin.directory.group
https://www.googleapis.com/auth/admin.directory.group.readonly",
"expires_in": 3586,
"access_type": "offline"
}
GET: <a href="https://www.googleapis.com/admin/directory/v1/groups?domain=" rel="nofollow noreferrer">https://www.googleapis.com/admin/directory/v1/groups?domain=</a>***.com&customer=***********<br>
HEADER: Authorization: Bearer + access_token
К сожалению, я получаю ответ:
</p>
<pre><code>{
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}
Я проверил у айтишников, и они сказали, что все настроено правильно в соответствии с этим google руководством.
Кто-нибудь сумел создать приложение или знает, как решить эту проблему?
Спасибо,
Используемый код (NodeJS):
const fetch = require('node-fetch');
const googleapis = require('googleapis')
const gsuiteAdmin = googleapis.google.admin('directory_v1')
const privatekey = require("./PRIVATE_KEY.json")
let jwtClient = new googleapis.google.auth.JWT(
privatekey.client_email,
null,
privatekey.private_key,
['https://www.googleapis.com/auth/admin.directory.group.readonly', 'https://www.googleapis.com/auth/admin.directory.group'])
jwtClient.authorize(function (err, tokens) {
if (err) {
console.log(err)
return
} else {
console.log("Successfully connected!")
getGroups()
}
})
function getGroups() {
console.log('Token:', jwtClient.credentials.access_token)
fetch('https://www.googleapis.com/admin/directory/v1/groups?domain=***.com&customer=********',
{
method: 'GET',
headers: { Authorization: "Bearer " + jwtClient.credentials.access_token }
})
.then(res => { console.log(res.status); debugger; return res.text() })
.then(body => { debugger; console.log(body) });
}