Получение контактов из Google API в узле

Я хочу получить контакты, используя API контактов Google в nodejs, но на странице developer.google для nodejs нет быстрого запуска. Я нашел эту оболочку на github https://github.com/hamdipro/google-contacts-api но я не понимаю ее и не знаю, как ее использовать.

Может кто-нибудь сказать мне, что я могу сделать?

1 ответ

Решение

Во-первых, вместо использования неофициального пакета, упомянутого в вопросе, вы должны предпочесть использовать официальный пакет, так как он хорошо поддерживается, все изменения под капотом обрабатываются должным образом, а также учитываются возникающие проблемы.

Официальный пакет для этого же здесь.

Теперь пошагово использовать пакет выше, чтобы получить контакты пользователя:-

  1. Включить Googleapis с помощью npm install googleapis --save
  2. Создать сервисный клиент

    • var google = require('googleapis');
    • var contacts = google.people('v1');
  3. Авторизовать клиента для отправки запроса { Ссылка на документы по аутентификации}

  4. Создание аутентифицированных запросов

    contacts.people.connections.list({ auth: oauth2Client //authetication object generated in step-3 }, function (err, response) { // handle err and response });

Этого должно быть достаточно, чтобы получить контактные данные пользователя. Также для аутентификации, если вы используете это для домена помимо gmail и имеете доступ администратора, вы можете получить все контакты пользователя, используя делегирование всего домена, в противном случае вам придется вручную разрешить доступ для каждого пользователя.

Надеюсь, поможет. Дайте мне знать в комментариях, если есть какие-либо вопросы.

К сожалению, официальный API Google для NodeJS не поддерживает API контактов. Вместо этого они используют People API. Если вам нужен доступ к "Другим контактам", вам понадобится API контактов.

Вы по-прежнему можете подключиться к API контактов с помощью официальной библиотеки googleapis, если вы уже используете ее для других целей, отправив запрос в API контактов после создания клиента аутентификации.

Учитывая, что у вас уже есть токен доступа пользователя (например, если вы сгенерировали его с помощью Passport, вот код:

const {google} = require("googleapis");
const authObj = new google.auth.OAuth2({
    access_type: 'offline',
    clientId: process.env.GOOGLE_ID,
    clientSecret: process.env.GOOGLE_SECRET,
});

Автоматическое обновление токена доступа до истечения срока его действия

authObj.on('tokens', (tokens) => {
    const access_token = tokens.access_token
    if (tokens.refresh_token){
        this.myTokens.refreshToken = tokens.refresh_token
        // save refresh token in the database if it exists
    }
        this.myTokens.accessToken = tokens.access_token       
        // save new access token (tokens.access_token)
}
authObj.setCredentials({
    access_token:this.myTokens.accessToken,
    refresh_token:this.myTokens.refreshToken,
});

Сделайте запрос к API контактов:

authObj.request({
    headers:{
        "GData-Version":3.0
    },
    params:{
        "alt":"json",
        //"q":"OPTIONAL SEARCH QUERY",
        //"startindex":0
        "orderby":"lastmodified",
        "sortorder":"descending",
    },
    url: "https://www.google.com/m8/feeds/contacts/default/full"
}).then( response => {
    console.log(response); // extracted contacts
});
Другие вопросы по тегам