Импорт контактов Gmail – PHP

Для импорта контактов почты Gmail:

  1. В Google Developers Console создать новый проект, включить Contacts API
  2. Создать приложение, получить ID и ключ (Client ID и Client secret)
  3. Сгенерировать ссылку для авторизации
  4. Получить код авторизации и с ним сделать запрос на получение oauth token’а
  5. Сделать запрос к апи с полученным токеном и получить xml-ответ с контактами почты gmail

  1. Переходим в Google Developers ConsoleСоздаем новый проект (подсказки к полям есть на форме)Далее переходим в раздел APIs & auth ⇒ APIs и включаем Contacts API:
  2. Затем переходим в раздел APIs & auth ⇒ Credentials и кликаем “CREATE NEW CLIENT ID”:Выбираем “Web application”, прописываем адрес веб-приложения и адрес куда должен быть выполнен редирект при успешной авторизации (redirect uri):Клик “Create Client ID” ⇒ получаем Client ID и Client secret, которые понадобятся дальше для авторизации и запроса к апи:
  3. Сгенерируем ссылку для запроса на авторизацию:

    При клике юзера по этой ссылке он будет направлен на страницу запроса разрешения для приложения на “Управление вашими контактами”:
  4. После разрешения доступа будет выполнен редирект на redirect uri с кодом авторизации.
    Получаем этот код и с ним делаем запрос на получение oauth token’а 
  5. Токен получен, делаем запрос к апи

Получаем список email адресов и имён. При необходимости можно распарсить и другие данные, которые возвращает апи.

ДЕМО: http://valerij.pp.ua/import-gmail-contacts-demo
Исходники: https://gist.github.com/anonymous/18cc65232afebf280645 (при необходимости допилить напильником)

Импорт контактов Gmail – PHP: 9 комментариев

  1. Должно ли все работать с localhost? Google должен ли как-то знать о сайте с которого обращаются к его API? Я пробовал все это проделать с localhost. На запрос контактов приходит XML без контактов но с 2-мя ошибками.

    • Нет, просто на локалхосте работать не будет. Да, гугл должен знать откуда запрос (показано во втором шаге). Для запуска на локалхосте можно настроить какой-нибудь реальный домен на локалхост и использовать его – тогда всё нормально получается.

  2. С хоста тоже не работает, приходит пустой ответ от гугл апи на запрос контактов.
    Посмотрите, плиз, почему, если есть возможность…

    • Пустой ответ приходил так как запрос к апи делался с пустым $accessToken. Результат $oauthResponse приходил в json, поэтому надо было ещё обернуть его в json_decode и тогда $oauthResponse->access_token возвращало бы то что нужно. (Исправил)

      • Приветствую тебя Админ!
        Единственная понятная для меня Статья. Огромное спасибо!

        Описанные изменения включи в код пожалуйста. Не все смогут понять что к чему.

  3. А добавлять контакты не пробовал?
    Что то я завис. В доке АПИ вроде как есть формат отправления контакта…. Но что-то не допру как это сделать правильно…

    • Не пробовал, не было такой необходимости. А что конкретно не получалось?

      • Проблема как доставить контакт , а особенно список контактов в скрипт по redirect uri . Получается только через GET, длина которого весьма ограничена..

Добавить комментарий

Ваш e-mail не будет опубликован.