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

Простой и эффективный способ импортировать контакты Gmail с использованием авторизации OAuth и Google API.

Демо

Первый шаг — это подготовка собственного проекта в консоли Google API. Затем нам нужно перейти в раздел API access и нажать кнопку Create OAuth 2,0 — это идентификатор клиента.

Google Contacts API - шаг 1
Google Contacts API — создать проект

Теперь мы должны ввести имя для нового проекта:

Google Contacts API - шаг 2
Google Contacts API — ввод информации

Нажмите кнопку next и укажите адрес назначения страницы:

Google Contacts API - шаг 3
Google Contacts API — создать ID клиента

Теперь у нас есть наш ID клиента (и секрет).

Получить список контактов

index.php

<?php // запретить предупреждения if (version_compare(phpversion(), "5.3.0", ">=") == 1)
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
else
error_reporting(E_ALL & ~E_NOTICE);
$sClientId = 'YOUR_GOOGLE_CLIENT_ID';
$sClientSecret = 'YOUR_GOOGLE_CLIENT_SECRET';
$sCallback = 'http://htmlhook.ru/';
// url обратного вызова, не забудьте изменить его на свой!
$iMaxResults = 20; // max results
$sStep = 'auth'; // current step
// включить библиотеку GmailOath https://code.google.com/p/rspsms/source/browse/trunk/system/plugins/GmailContacts/GmailOath.php?r=11
include_once('classes/GmailOath.php');
session_start();
// подготовка новых случаев GmailOath и GmailGetContacts
$oAuth = new GmailOath($sClientId, $sClientSecret, $argarray, false, $sCallback);
$oGetContacts = new GmailGetContacts();
if ($_GET && $_GET['oauth_token']) {
$sStep = 'fetch_contacts'; // запрос контактов
// декодирования запроса знак и секрет
$sDecodedToken = $oAuth->rfc3986_decode($_GET['oauth_token']);
$sDecodedTokenSecret = $oAuth->rfc3986_decode($_SESSION['oauth_token_secret']);
// добавить 'oauth_verifier'
$oAuthVerifier = $oAuth->rfc3986_decode($_GET['oauth_verifier']);
// подготовка маркера доступа, расшифровать его, и получить список контактов
$oAccessToken = $oGetContacts->get_access_token($oAuth, $sDecodedToken, $sDecodedTokenSecret, $oAuthVerifier, false, true, true);
$sAccessToken = $oAuth->rfc3986_decode($oAccessToken['oauth_token']);
$sAccessTokenSecret = $oAuth->rfc3986_decode($oAccessToken['oauth_token_secret']);
$aContacts = $oGetContacts->GetContacts($oAuth, $sAccessToken, $sAccessTokenSecret, false, true, $iMaxResults);
// включить массив с контактами в строку html
$sContacts = $sContactName = ";
foreach($aContacts as $k => $aInfo) {
$sContactName = end($aInfo['title']);
$aLast = end($aContacts[$k]);
foreach($aLast as $aEmail) {
$sContacts .= '
' . $sContactName . '(' . $aEmail['address'] . ')
';
}
}
} else {
// подготовка маркера доступа и установка его в сессии
$oRequestToken = $oGetContacts->get_request_token($oAuth, false, true, true);
$_SESSION['oauth_token'] = $oRequestToken['oauth_token'];
$_SESSION['oauth_token_secret'] = $oRequestToken['oauth_token_secret'];
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Google API — Get contact list
<link href="css/main.css" rel="stylesheet" type="text/css" />
<?php if ($sStep == 'auth'): ?>
<section style="text-align: center;"> 
<h1>Шаг 1. OAuth</h1> 
<h2>Пожалуйста, нажмите <a href="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=<?php echo $oAuth->rfc3986_decode($oRequestToken['oauth_token']) ?>"> эту ссылку</a>
чтобы получить доступ для получения контактов</h2>
</section> 
<?php elseif ($sStep == 'fetch_contacts'): ?> 
<section style="text-align: center;"> 
<h1>Шаг 2. Результаты</h1>
<?= $sContacts ?> 
</section> 
<?php endif ?>

В начале, мы включаем библиотеку GmailOath.php. Эту библиотеку вы можете скачать здесь. После загрузки — обратите внимание на код. Вы увидите — главное функциональность разделена на 2 секции: авторизация и выборка из списка контактов. Как обычно, — я положил свои комментарии в этом коде для лучшего понимания.

Когда мы нажимаем кнопку разрешения, откроется страница авторизации Google, где мы должны предоставить доступ для нашего приложения, чтобы получить список контактов.

Google Contacts API - шаг 5
Контакты Google