Обращаясь к этому документу Веб-токены JSON , я попытался получить доступ к API отчетов Google Analytics, пытаясь сначала выполнить проверку подлинности «Учетные данные приложения по умолчанию», а затем аутентификацию «Веб-токены JSON».
Каждый раз, когда я получаю сообщение об ошибке Request had insufficient authentication scopes.
У меня нет проблем с доступом к данным через Query Explorer , и я действительно не хочу использовать OAuth2, так как я только начну получать доступ к своей учетной записи. Перечисленные ниже области были получены из "Google Analytics API v3" в Области Google .
Учитывая сообщение об ошибке, я пробовал различные итерации других областей, особенно те, которые относятся к "Analytics Reporting API, v4."
Примечание : электронное письмо, указанное в ключе учетной записи службы из консоли разработчиков Google, было добавлено ко всем разрешениям (учетная запись, свойство, представление) консоли администратора Google Analytics. Я также попробовал нечто подобное, как описано в « Сервис <-> Сервис аутентификации ».
Попытка «Учетные данные приложения по умолчанию» (установка пути к ключу учетной записи службы в .env):
const {auth} = require('google-auth-library');
async function main() {
const client = await auth.getClient({
scopes: [
'https://www.googleapis.com/auth/analytics',
'https://www.googleapis.com/auth/analytics.edit',
'https://www.googleapis.com/auth/analytics.manage.users',
'https://www.googleapis.com/auth/analytics.manage.users.readonly',
'https://www.googleapis.com/auth/analytics.provision',
'https://www.googleapis.com/auth/analytics.readonly',
'https://www.googleapis.com/auth/analytics.user.deletion'
]
});
const projectId = await auth.getProjectId();
const url = `https://www.googleapis.com/dns/v1/projects/${projectId}`;
const res = await client.request({ url });
console.log(res.data);
}
main().catch(console.error);
Попытка "JSON Web Tokens:"
const {JWT} = require('google-auth-library');
const keys = require('../service-account-credentials.json');
async function main() {
console.log('keys.client_email: ', keys.client_email)
console.log('keys.private_key: ', keys.private_key)
const client = new JWT(
keys.client_email,
null,
keys.private_key,
[
'https://www.googleapis.com/auth/analytics',
'https://www.googleapis.com/auth/analytics.edit',
'https://www.googleapis.com/auth/analytics.manage.users',
'https://www.googleapis.com/auth/analytics.manage.users.readonly',
'https://www.googleapis.com/auth/analytics.provision',
'https://www.googleapis.com/auth/analytics.readonly',
'https://www.googleapis.com/auth/analytics.user.deletion'
],
);
const url = `https://www.googleapis.com/dns/v1/projects/${keys.project_id}`;
const res = await client.request({url});
console.log(res.data);
const tokenInfo = await client.getTokenInfo(client.credentials.access_token);
console.log(tokenInfo);
}
main().catch(console.error);