В моем проекте я пытаюсь получить доступ к данным контактов Google (доступ для чтения и записи) из моей личной учетной записи Google, используя Google People API
. Хочу подчеркнуть, что проект предназначен для работы только с одной учетной записью Google. Моя главная проблема - сделать аутентификацию запроса и получить данные.
Я установил клиентскую библиотеку googleapis . Затем с помощью Google API Console на вкладке Credentails
я создал новый Service Account
и получил файл json, содержащий client_email
, private_key
и другие данные, необходимые для аутентификации. Затем я пытался все настроить
const {google} = require('googleapis');
const contacts = google.people('v1');
const scopes = [
'https://www.googleapis.com/auth/contacts',
'https://www.googleapis.com/auth/contacts.readonly',
];
const privateKey = require('app/config/private-data.json'); // JSON that contains `client_email`, `private_key`
router.get('/googleapis-test', (req, res, next) => {
const auth = new google.auth.JWT(privateKey.client_email, null, privateKey.private_key, scopes);
contacts.people.connections
.list({
auth,
resourceName: 'people/me',
pageSize: 10,
personFields: ['names'],
})
.then((response) => {
return res.send(response.data);
})
.catch(next);
});
В моей личной учетной записи Google у меня более 2000 контактов, но объект response.data
, который я получил, к сожалению, пуст. Предполагается, что созданная мной учетная запись службы не имеет разрешения / доступа к контактам моей личной учетной записи Google, и мне приходится предоставлять какую-то связь между этими двумя учетными записями для обмена данными.
В официальной документации я обнаружил, что для такого рода операций рекомендуется использовать OAuth 2.0, но, поскольку я хочу получить доступ к данным в своем API, отсутствует интерфейс для заполнения формы аутентификации, предоставленной Google.
Буду признателен, если вы поможете мне с этим вопросом.