Доказательство в пудинге, поэтому, прежде чем пытать себя, читая этот длинный пост: Создайте тестовый сайт контактов заставьте его работать :) Если у вас открыта консоль веб-инструмента, вы можете увидеть, что мы вернем контактное лицо ресурс, и Элизабет Беннет теперь будет в ваших контактах!
Да, кстати, при аутентификации пользователя google будет жаловаться на небезопасность как на моем маленьком веб-сайте, так и на вашей локальной версии, просто нажмите "Дополнительно" и продолжайте. (Google будет делать это до тех пор, пока вы не передадите свой OAuth для проверки их командой, что будет хорошо для конечного продукта, но ...)
Так что в справке по Google
на самом верху мы видим это:
Примечание. Для доступа к контактам пользователей для чтения и записи используйте приложение Люди.
API, который предоставляет контактную информацию и информацию о профиле с использованием JSON
вместо старого протокола GData.
Так что, похоже, правильный ответ здесь - перейти на People API . Я потратил некоторое время на изучение этого вопроса и получил для вас краткий ответ.
Я нашел страницу этого примера , которая работает с большинством того, что вы хотите. Если вы будете точно следовать ему, вы получите локальную версию, работающую в формате javascript, которая подключается к их API, что позволяет нам создавать контакты.
Мы должны настроить приложение API в API Google, чтобы по существу аутентифицировать этот процесс.
Как только мы это сделаем, мы можем настроить кнопки, которые запрашивают у пользователя подтверждение аутентификации (позволяют нам создать для них контакт).
Самое интересное - изменить их код, который просто выдвигает топ-10 пользователей для пользователя на странице в создание контакта.
Возможно, есть способы сделать это прямо с помощью обычного http-запроса после того, как вы получите разрешение пользователя, но я обнаружил, что быстрее работать с его crazy api setup .
Нам нужно знать, как настроить вызов API gapi.client.people.people.createContact
, и для этого потребуется ресурс Person . На этом ресурсе удобно нажимать, чтобы узнать, как мы можем настроить категории ресурсов для персонала.
Здесь - это место, где мы можем поиграть с API, прежде чем пытаться разместить его на нашей веб-странице. На правой панели заголовок:
Попробуйте этот API
Прямо рядом с ним есть маленькая коробочка, которая расширяет область, чтобы мы могли легче играть с API. В правом верхнем углу есть опция JavaScript, чтобы попытаться взглянуть на JavaScript-эквивалент запроса, который мы выполняем.
Слева у нас есть тело запроса, которое позволяет нам указать детали нашего API-запроса createContacts. Так что для вашего примера, если вы введете:
{
"names": [
{
"givenName": "Elizabeth",
"familyName": "Bennet"
}
],
"phoneNumbers": [
{
"type": "home",
"value": "(206)555-1212"
},
{
"type": "cell",
"value": "(206)555-1213"
}
],
"addresses": [
{
"type": "home",
"streetAddress": "1600 Amphitheatre Pkwy",
"postalCode": "94043",
"country": "United States",
"city": "Mountain View",
"region": "California"
}
]
}
В этом левом поле вы можете видеть, как оно вводится в запрос javascript createContacts справа.
Теперь этот код не идеален для того, как мы хотим, чтобы мы и наш пользователь проходили аутентификацию, поэтому мы выберем две основные вещи:
Эта область действия сообщает API, по сути, то, что мы хотим получить для пользователя.
Итак, собери все вместе:
<code><!DOCTYPE html>
<html>
<head>
<title>People API Quickstart</title>
<meta charset="utf-8" />
</head>
<body>
<p>People API Quickstart</p>
<!--Add buttons to initiate auth sequence and sign out-->
<button id="authorize_button" style="display: none;">Authorize</button>
<button id="signout_button" style="display: none;">Sign Out</button>
<button id="contact_button" style="display: none;">Create Contact</button>
<pre id="content" style="white-space: pre-wrap;">
// Идентификатор клиента и ключ API из консоли разработчика
var CLIENT_ID = ' ';
var API_KEY = '<ВАШ API-КЛЮЧ ЗДЕСЬ! > ';
// Массив URL-адресов документов для обнаружения API для API, используемых при быстром запуске
var DISCOVERY_DOCS = ["
https://www.googleapis.com/discovery/v1/apis/people/v1/rest"];
// Области авторизации, требуемые API; несколько областей могут быть
// включено, разделено пробелами.
var SCOPES = "
https://www.googleapis.com/auth/contacts";
var authorizeButton = document.getElementById ('authorize_button');
var signoutButton = document.getElementById ('signout_button');
var contactButton = document.getElementById ('contact_button');
/ **
* При загрузке вызывается для загрузки библиотеки auth2 и клиентской библиотеки API.
* /
function handleClientLoad () {gapi.load ('client: auth2', initClient);
}
/ **
* Инициализирует клиентскую библиотеку API и устанавливает состояние входа
* слушатели.
* /
function initClient () {
gapi.client.init ({
apiKey: API_KEY,
clientId: CLIENT_ID,
discoveryDocs: DISCOVERY_DOCS,
область применения: ОБЛАСТИ ПРИМЕНЕНИЯ
}). then (function () {
// Прослушивание изменений состояния входа.
. Gapi.auth2.getAuthInstance () isSignedIn.listen (updateSigninStatus);
// Обработка начального состояния входа.
updateSigninStatus (gapi.auth2.getAuthInstance () isSignedIn.get ().);
authorizeButton.onclick = handleAuthClick;
signoutButton.onclick = handleSignoutClick;
contactButton.onclick = handleContactClick;
}, функция (ошибка) {
appendPre (JSON.stringify (error, null, 2));
});
}
/ **
* Вызывается при изменении статуса входа в систему для обновления пользовательского интерфейса.
* соответственно. После входа вызывается API.
* /
function updateSigninStatus (isSignedIn) {
if (isSignedIn) {
authorizeButton.style.display = 'none';
signoutButton.style.display = 'block';
contactButton.style.display = 'block';
} еще {
authorizeButton.style.display = 'block';
signoutButton.style.display = 'none';
}
}
/ **
* Войдите в систему после нажатия кнопки.
* /
function handleAuthClick (event) {
. Gapi.auth2.getAuthInstance () зарегистрировались ();
}
/ **
* Выход пользователя после нажатия кнопки.
* /
function handleSignoutClick (event) {
. Gapi.auth2.getAuthInstance () SignOut ();
}
/ **
* Создать контакт по нажатию кнопки.
* /
function handleContactClick () {
gapi.client.people.people.createContact ({
"ресурс": {
"имена": [
{
«GivenName»: «Элизабет»,
"familyName": "Беннет"
}
],
"телефонные номера": [
{
"тип": "дом",
«значение»: «(206) 555-1212»
.signIn ({scope: "
https://www.googleapis.com/auth/contacts"})},
{
"тип": "клетка",
«значение»: «(206) 555-1213»
}
],
"адреса": [
{
"тип": "дом",
"streetAddress": "1600 Амфитеатр Pkwy",
"postalCode": "94043",
"страна": "Соединенные Штаты",
"город": "Маунтин-Вью",
"регион": "Калифорния"
}
]
}
}). then (function (response) {
// Обработка результатов здесь (response.result имеет проанализированное тело).
console.log («Ответ», ответ);
},
function (err) {console.error ("Ошибка выполнения", err); });
}
/ **
* Добавить элемент pre к телу, содержащему данное сообщение
* как его текстовый узел. Используется для отображения результатов вызова API.
*
* @param {string} message Текст для размещения в предварительном элементе.
* /
function appendPre (message) {
var pre = document.getElementById ('content');
var textContent = document.createTextNode (message + '\ n');
pre.appendChild (TextContent);
}
Переменные client и api вверху - это то место, куда вы кладете свои ключи, пройдя их шаги на странице быстрого запуска.
Очевидно, что кнопки и то, как все работает, можно изменить, но это было только для того, чтобы доказать, что это работает: P
Вот мой github: GitHub вам нужно только обратить внимание на index.html, которым был php, чтобы я мог открыть небольшой тестовый сайт, чтобы показать вам.
Google API снова бьют!
Надеюсь, это поможет, удари меня, если есть что-нибудь еще!