En esta guía de inicio rápido, obtendrás un token de OAuth para tu cuenta y enviarás solicitudes a los extremos de la API de Portabilidad de datos con marcas de tiempo para filtrar los datos exportados.
En esta guía de inicio rápido, se explica cómo usar la API de Data Portability con acceso basado en el tiempo y aplicar filtros de tiempo para los recursos compatibles. Para obtener más detalles sobre el acceso basado en el tiempo a los datos del usuario, consulta Cómo usar el acceso basado en el tiempo.
Qué aprenderá
En esta guía de inicio rápido, aprenderás a hacer lo siguiente:
- Envía solicitudes autenticadas recurrentes al extremo
InitiatePortabilityArchive
para exportar solo los datos nuevos desde la última exportación. - Envía una solicitud autenticada al extremo
InitiatePortabilityArchive
para exportar solo los datos de los últimos 6 meses. - Envía una solicitud autenticada al extremo
InitiatePortabilityArchive
para solo exportar datos de un período específico.
Requisitos previos
Para ejecutar esta guía de inicio rápido, debes hacer lo siguiente:
- Verifica que la API de Data Portability esté disponible para los usuarios de tu ubicación. Para obtener una lista de los países y regiones admitidos, consulta Preguntas frecuentes en la página “Cómo compartir una copia de tus datos con un tercero”.
- Completa los pasos de configuración de la API de Data Portability.
- Sigue los pasos para configurar OAuth para
apps web de JavaScript. En producción, por lo general, usarías un flujo diferente, como el flujo de OAuth para aplicaciones de servidor web.
Para simplificar, en esta guía de inicio rápido, se usa el flujo de la app web de JavaScript.
- Cuando crees tus credenciales de autorización, toma nota de tu ID de cliente de OAuth 2.0 y tu URI de redireccionamiento autorizado (por ejemplo, https://google.com). Los necesitarás más adelante en la guía de inicio rápido.
- Cuando configures los permisos para la API de Data Portability, ten en cuenta que esta guía de inicio rápido usa el grupo de recursos
myactivity.search
: https://www.googleapis.com/auth/dataportability.myactivity.search. - Cuando elijas la cantidad de tiempo que quieres permitir el acceso, debes seleccionar 30 días para probar el filtrado de tiempo con el acceso basado en el tiempo. (los filtros de tiempo también funcionan con el acceso único).
- Obtén un token de OAuth.
- Obtener acceso a una cuenta que sea propiedad de tu organización o que esta controle En esta guía de inicio rápido, se exportan los datos de actividad de búsqueda de esta cuenta.
Obtén un token de OAuth
En esta guía de inicio rápido, enviarás una solicitud de autorización para obtener un token de OAuth con una URL. En este proceso, se usa el flujo para apps web de JavaScript. Este flujo no muestra un token de actualización.
En el caso de una app de producción, por lo general, usarías un flujo de OAuth para obtener un token de actualización que se pueda usar para generar tokens de acceso a pedido. Un ejemplo de esto sería el flujo de apps web del servidor.
Para obtener un token de OAuth, haz lo siguiente:
Compón una URL como la siguiente.
https://accounts.google.com/o/oauth2/v2/auth? client_id=client_id& redirect_uri=redirect_uri& response_type=token& scope=https://www.googleapis.com/auth/dataportability.myactivity.search& state=developer-specified-value
En la URL:
client_id
es tu ID de cliente de OAuth.redirect_uri
es tu URI de redireccionamiento autorizado, por ejemplo, https://google.com.
Ten en cuenta que el alcance que se usa en la URL de esta guía de inicio rápido es el del alcance de la actividad de búsqueda. Puedes usar cualquier alcance que admita filtros de tiempo.
Pega la URL en la barra de direcciones del navegador y sigue los pasos del flujo de OAuth. Este flujo requiere que accedas a la cuenta que pertenece o controla tu organización y que usas para esta guía de inicio rápido.
Esta es la cuenta que otorga su consentimiento a los alcances de OAuth. La pantalla de consentimiento debería verse así (el texto de tu pantalla puede variar del texto de esta imagen):
Elige los permisos a los que deseas otorgar acceso y el período durante el que deseas compartir el acceso a los datos de la cuenta (una vez, 30 días o 180 días). Para esta guía de inicio rápido, elige 30 días. (Los filtros de tiempo también funcionan con acceso único).
Después de otorgar el consentimiento y decidir la duración del acceso, deberías redireccionarte al URI de redireccionamiento: https://google.com. La URL que se genera en la barra de direcciones incluye el token de acceso de OAuth.
Por ejemplo, si la cuenta de usuario otorga acceso de OAuth al permiso
dataportability.myactivity.search
, la URL generada se verá de la siguiente manera:https://google.com/#state=developer-specified-value&access_token=your_OAuth_token&token_type=Bearer&expires_in=3599&scope=https://www.googleapis.com/auth/dataportability.myactivity.search
En la URL, your_OAuth_token es una cadena que representa el token.
Para validar el token de OAuth, pega esta URL en tu navegador:
https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=your_OAuth_token
La respuesta debería verse de la siguiente manera:
{ "azp": <your_azp_value>, "aud": <your_aud_value>, "scope": "https://www.googleapis.com/auth/dataportability.myactivity.search", "exp": "1694210968", "expires_in": "3334", "access_type": "online" }
No necesitas los campos
azp
niaud
para realizar solicitudes. El campoazp
representa elclient_id
del presentador autorizado, y el campoaud
identifica el público al que está destinado este token, que será igual a uno de los IDs de cliente de tu aplicación.Obtén tu token de OAuth y tu clave de API. Necesitas estos datos para realizar llamadas a la API de Data Portability.
Envía solicitudes a los extremos
En esta guía de inicio rápido, usarás los comandos curl para llamar a los extremos de la API de Data Portability con marcas de tiempo para filtrar los datos exportados.Estos comandos requieren el token de OAuth y la clave de API que recopilaste anteriormente.
Datos de la última exportación
Puedes usar los filtros de tiempo con el acceso basado en el tiempo para exportar los datos nuevos desde la última exportación. Por ejemplo, considera el alcance https://www.googleapis.com/auth/dataportability.myactivity.search
.
Primero, envías una solicitud autenticada al extremo
InitiatePortabilityArchive
. Esta solicitud inicia un trabajo de archivo para el corpus de datos completo.Ejecuta el siguiente comando de curl:
curl -H 'Authorization: Bearer your_OAuth_token' -X POST \ -H "Content-Type: application/json; charset=utf-8" \ --data '{"resources":["myactivity.search"]}' \ https://dataportability.googleapis.com/v1/portabilityArchive:initiate
En el comando, haz lo siguiente:
your_OAuth_token
es tu token de OAuth.
La solicitud
InitiatePortabilityArchive
muestra unarchiveJobId
y unaccessType
. El ID del trabajo se usa para recuperar el estado del archivo de datos, y el tipo de acceso determina si se te otorgó acceso a los datos de forma única o por tiempo determinado. En el caso del acceso basado en el tiempo, verás lo siguiente:{ "archiveJobId": "<your_job_id_1>" "accessType": "ACCESS_TYPE_TIME_BASED" }
Si no proporcionas un token OAuth válido, se muestra este mensaje de error:
Request had invalid authentication credentials. Expected OAuth 2.0 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
A continuación, envías una solicitud autenticada al extremo
GetPortabilityArchiveState
para recuperar el estado de la tarea de archivo.Ejecuta el siguiente comando de curl:
curl -H 'Authorization: Bearer your_OAuth_token' -X GET \ -H "Content-Type: application/json; charset=utf-8" \ https://dataportability.googleapis.com/v1/archiveJobs/your_job_id_1/portabilityArchiveState
En el comando, haz lo siguiente:
your_OAuth_token
es tu token de OAuth.your_job_id_1
es el ID del trabajo que muestra la solicitudInitiatePortabilityArchive
.
La respuesta se basa en el estado del trabajo. Si el trabajo no se completó, la respuesta proporciona el estado actual. Debes enviar solicitudes a este extremo de forma periódica hasta que se complete la tarea.
{ "state": "IN_PROGRESS" }
Si la tarea está completa, la respuesta contiene el estado y una o más URLs firmadas que se usan para descargar el archivo de datos. También hay un campo
export_time
que representa la marca de tiempo de la primera llamada aInitiatePortabilityArchive
.{ "state": "COMPLETE", "urls": [ "<signed_url>" ] "export_time": "<timestamp_of_first_initiate_request>" }
Pega la URL firmada en tu navegador para descargar el archivo de datos. Debes examinar el contenido del archivo para asegurarte de que contenga los datos de actividad de búsqueda esperados.
Si recibes un estado
FAILED
en la respuesta, puedes volver a intentar la exportación con el métodoRetryPortabilityArchive
.Espera al menos 24 horas y, luego, realiza otra solicitud a
InitiatePortabilityArchive
con el mismo comando que en el paso 1, pero esta vez usaexport_time
comostart_time
.curl -H 'Authorization: Bearer your_OAuth_token' -X POST \ -H "Content-Type: application/json; charset=utf-8" \ --data '{"resources":["myactivity.search"], "start_time": timestamp_of_first_initiate_request}' \ https://dataportability.googleapis.com/v1/portabilityArchive:initiate
Para el acceso basado en el tiempo, se mostrará lo siguiente:
{ "archiveJobId": "<your_job_id_2>" "accessType": "ACCESS_TYPE_TIME_BASED" }
Repite el paso 2 para enviar una solicitud autenticada al extremo
GetPortabilityArchiveState
y recuperar el estado de la tarea de archivo (con<your_job_id_2>
).Cuando se complete el trabajo, la respuesta será la siguiente:
{ "state": "COMPLETE", "urls": [ "signed_urls" ], "start_time": timestamp_of_first_initiate_request, "export_time": timestamp_of_second_initiate_request }
Verifica que los datos de la segunda exportación solo contengan datos nuevos generados después de la primera exportación.
Datos de los últimos 6 meses
También puedes usar los filtros de tiempo para exportar solo los datos más recientes en lugar del corpus completo.
Supongamos que la fecha de hoy es
2024-10-01
y deseas exportar los datos de los últimos 6 meses. Primero, envías una solicitud autenticada al extremoInitiatePortabilityArchive
con unstart_time
de "2024-04-01T00:00:00Z".Ejecuta el siguiente comando de curl:
curl -H 'Authorization: Bearer your_OAuth_token' -X POST \ -H "Content-Type: application/json; charset=utf-8" \ --data '{"resources":["myactivity.search"], "start_time": "2024-04-01T00:00:00Z"}' \ https://dataportability.googleapis.com/v1/portabilityArchive:initiate
Para el acceso basado en el tiempo, se mostrará lo siguiente:
{ "archiveJobId": "job_id_1" "accessType": "ACCESS_TYPE_TIME_BASED" }
Realiza una solicitud al extremo
GetPortabilityArchiveState
para recuperar el estado de la tarea de archivo.Ejecuta el siguiente comando de curl:
curl -H 'Authorization: Bearer your_OAuth_token' -X GET \ -H "Content-Type: application/json; charset=utf-8" \ https://dataportability.googleapis.com/v1/archiveJobs/job_id_1/portabilityArchiveState
Cuando se complete el trabajo, la respuesta será la siguiente:
{ "state": "COMPLETE", "urls": [ "signed_urls" ], "start_time": "2024-04-01T00:00:00Z", "export_time": "2024-10-01T00:00:00Z" }
Ten en cuenta que
start_time
es elstart_time
especificado en el paso 1 y queexport_time
es la marca de tiempo de la llamada aInitiatePortabilityArchive
que se realizó en el paso 1.Verifica que la exportación solo contenga datos de los últimos seis meses.
Datos de un período específico
Puedes usar los filtros de tiempo para exportar datos de un período específico, como solo los datos de 2023.
Primero, envías una solicitud autenticada al extremo
InitiatePortabilityArchive
con unstart_time
de "2023-01-01T00:00:00Z" y unend_time
de "2023-12-31T23:59:59Z".Ejecuta el siguiente comando de curl:
curl -H 'Authorization: Bearer your_OAuth_token' -X POST \ -H "Content-Type: application/json; charset=utf-8" \ --data '{"resources":["myactivity.search"], "start_time": "2023-01-01T00:00:00Z", "end_time": "2023-12-31T23:59:59Z"}' \ https://dataportability.googleapis.com/v1/portabilityArchive:initiate
Para el acceso basado en el tiempo, se mostrará lo siguiente:
{ "archiveJobId": "job_id_1" "accessType": "ACCESS_TYPE_TIME_BASED" }
Realiza una solicitud al extremo
GetPortabilityArchiveState
para recuperar el estado de la tarea de archivo.Ejecuta el siguiente comando de curl:
curl -H 'Authorization: Bearer your_OAuth_token' -X GET \ -H "Content-Type: application/json; charset=utf-8" \ https://dataportability.googleapis.com/v1/archiveJobs/job_id_1/portabilityArchiveState
Cuando se complete el trabajo, la respuesta será la siguiente:
{ "state": "COMPLETE", "urls": [ "signed_urls" ], "start_time": "2023-01-01T00:00:00Z", "export_time": "2023-12-31T23:59:59Z" }
Ten en cuenta que
start_time
es elstart_time
especificado en el paso 1 y queexport_time
es igual aend_time
proporcionado en el paso 1.Verifica que la exportación solo contenga datos de 2023.
Alcances admitidos
Los siguientes alcances admiten filtros de hora:
https://www.googleapis.com/auth/dataportability.myactivity.youtube
https://www.googleapis.com/auth/dataportability.myactivity.maps
https://www.googleapis.com/auth/dataportability.myactivity.search
https://www.googleapis.com/auth/dataportability.myactivity.myadcenter
https://www.googleapis.com/auth/dataportability.myactivity.shopping
https://www.googleapis.com/auth/dataportability.myactivity.play
https://www.googleapis.com/auth/dataportability.chrome.history
Precaución: Las solicitudes filtradas por tiempo que combinan alcances compatibles y no compatibles generan un error INVALID_ARGUMENT
que indica The requested
resources do not support time filters
.