desde hace días mi objetivo es conseguir importar los contactos de una cuenta de gmail utilizando PHP. Como no lo conseguía he ido haciendo pruebas de distintos tipos para ir avanzando algo.
Mediante la consola de APIs de google he hecho todo lo necesario, crear el proyecto, habilitar las APIs, crean una cuenta de servicio, etc etc. Se que toda esta parte debe estar bien por que el siguiente código funciona (es una de las pruebas que he conseguido que funcione). EL código accede a las API de Books de google:
Código PHP:
<?php
require_once 'vendor/autoload.php';
$client = new Google_Client();
putenv('GOOGLE_APPLICATION_CREDENTIALS=C:\\xampp\\htdocs\\ExportarContactosGoogle\\v3\\Prueba2-985206558dec.json');
$client->useApplicationDefaultCredentials();
$client->setApplicationName("Books");
$client->setScopes(['https://www.googleapis.com/auth/books']);
$service = new Google_Service_Books($client);
$optParams = array('filter' => 'free-ebooks');
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
?>
<h3>Results Of Call:</h3>
<?php foreach ($results as $item): ?>
<?= $item['volumeInfo']['title'] ?>
<br />
<?php endforeach ?>
Con alguna otra API he conseguido sacar valores tambíen, pero desde que intento hacer los mismo con la API de gmail falla. El código por ejemplo sería:
Código PHP:
<?php
require_once 'vendor/autoload.php';
$client = new Google_Client();
putenv('GOOGLE_APPLICATION_CREDENTIALS=C:\\xampp\\htdocs\\ExportarContactosGoogle\\v4\\Prueba2-9ee13e067343.json');
$client->useApplicationDefaultCredentials();
$client->setApplicationName("Prueba2");
$client->setScopes(['https://mail.google.com/']);
$services = new Google_Service_Gmail($client);
try {
//print_r($services->serviceName);
print_r($services->users_labels->get("people/me",array()));
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
}
?>
DOnde el error que obtengo (usando el scripot de arribo u otro parecido que intenta enviar un email) es este:
An error occurred: { "error": "unauthorized_client", "error_description": "Unauthorized client or scope in request." }
Alguna idea de por donde tirar?, esto no me dejará sacar los contactos todavía, pero será un paso adelante para llegar a sacarlos.
Muchas gracias a todos.