Получить контакты моей учетной записи Google в узле JS с помощью учетной записи службы - PullRequest
0 голосов
/ 16 января 2019

В моем проекте я пытаюсь получить доступ к данным контактов 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.

Буду признателен, если вы поможете мне с этим вопросом.

...