Comienza a usar la API de portabilidad de datos

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.

Aprendizajes esperados

En esta guía de inicio rápido, aprenderás a hacer lo siguiente:

  • Para enviar una solicitud autenticada al extremo InitiatePortabilityArchive, proporciona un token de OAuth válido. La respuesta debe contener un job_id válido.
  • Envía una solicitud autenticada al extremo GetPortabilityArchiveState. La respuesta debe contener un estado de trabajo válido y, cuando el trabajo está completo, una URL firmada.
  • (Opcional) Envía una solicitud autenticada con un token de OAuth válido al extremo InitiatePortabilityArchive por segunda vez con las mismas credenciales. Esto muestra un error RESOURCE_EXHAUSTED y está diseñado para destacar la importancia del extremo ResetAuthorization.
  • Envía una solicitud autenticada al extremo ResetAuthorization. Esta solicitud revoca todos los permisos de OAuth otorgados por el usuario.
  • (Opcional) Envía una solicitud al extremo InitiatePortabilityArchive con el mismo token de OAuth que usaste antes. La solicitud debería fallar después de que se restablezca la autorización.

Requisitos previos

Sigue estos pasos para ejecutar esta guía de inicio rápido:

  • Verifica que la API de Data Portability esté disponible para los usuarios de tu ubicación. Para obtener una lista de las regiones y los países admitidos, consulta las Preguntas frecuentes en la página "Comparte una copia de tus datos con un tercero".
  • Completa los pasos de configuración de la API de portabilidad de datos.
  • Sigue los pasos para configurar OAuth en las apps web con JavaScript. En producción, normalmente usarías un flujo diferente, como el de OAuth para las aplicaciones de servidor web. Para simplificar, esta guía de inicio rápido usa el flujo de app web de JavaScript.
    • Cuando crees tus credenciales de autorización, toma nota del ID de cliente de OAuth 2.0 y del 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 de la API de portabilidad de datos, ten en cuenta que en esta guía de inicio rápido se usa el grupo de recursos myactivity.search: https://www.googleapis.com/auth/dataportability.myactivity.search.
  • Obtén un token de OAuth.
  • Obtener acceso a una cuenta que pertenece a su organización o está bajo su control En esta guía de inicio rápido, se exportan los datos de la actividad de búsqueda de esta cuenta.

Obtén un token de OAuth

En esta guía de inicio rápido, debes enviar una solicitud de autorización para obtener un token de OAuth mediante una URL. Este proceso usa el flujo para las 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 puede usar para generar tokens de acceso a pedido. Un ejemplo de esto sería el flujo de las aplicaciones web del servidor.

Para obtener un token de OAuth, haz lo siguiente:

  1. Redacta 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&
    include_granted_scopes=true&
    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 utilizado en la URL de esta guía de inicio rápido es el alcance de la actividad de búsqueda. También puedes usar el alcance de la actividad de YouTube o ambos.

  2. 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 es propiedad de tu organización o que está controlada para ella y que usas para esta guía de inicio rápido.

    Esta es la cuenta que da su consentimiento para los permisos de OAuth. La pantalla de consentimiento debería tener el siguiente aspecto (el texto de la pantalla puede variar respecto del texto de esta imagen):

    La pantalla de consentimiento en la que el usuario acepta permitir el acceso a los datos de la actividad de búsqueda

  3. Después de otorgar tu consentimiento, se te debe redireccionar 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 alcance 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.

  4. Para validar el token de OAuth, pega la siguiente 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"
    }
    
  5. Recopila tu token de OAuth y tu clave de API. Los necesitarás para hacer llamadas a la API de Data Portability.

Envía solicitudes a los extremos

En esta guía de inicio rápido, usarás comandos de curl para llamar a los extremos de la API de Data Portability. Estos comandos requieren el token de OAuth y la clave de API que recopilaste anteriormente.

Para llamar a la API de Data Portability, sigue estos pasos:

  1. Primero, envías una solicitud autenticada al extremo InitiatePortabilityArchive. Con esta solicitud, se inicia un trabajo de archivo.

    Ejecuta el siguiente comando 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.

    NOTA: El parámetro resources solo debe contener los permisos de OAuth a los que se les otorgó acceso. En este ejemplo, solo se otorgó myactivity.search. Si incluyes grupos de recursos adicionales, se mostrará un error.

    La solicitud InitiatePortabilityArchive muestra un job_id. Este ID de trabajo se usa para recuperar el estado del archivo de datos.

    {
      "archiveJobId": "<your_job_id>"
    }
    

    Si no proporcionas un token de OAuth válido, se mostrará 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.

  2. A continuación, debes enviar una solicitud autenticada al extremo GetPortabilityArchiveState para recuperar el estado del trabajo de archivo.

    Ejecuta el siguiente comando 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/portabilityArchiveState
    

    En el comando, haz lo siguiente:

    • your_OAuth_token es tu token de OAuth.
    • your_job_id es el ID de trabajo que muestra la solicitud InitiatePortabilityArchive.

    La respuesta se basa en el state del trabajo. Si el trabajo no se completa, la respuesta proporciona el estado actual. Debes enviar solicitudes a este extremo de forma periódica hasta que se complete el trabajo.

    {
      "state": "IN_PROGRESS"
    }
    

    Si se completó el trabajo, la respuesta contendrá el estado y una o más URL firmadas que se usan para descargar el archivo de datos.

    {
      "state": "COMPLETE",
      "urls": [
        "<signed_url>"
      ]
    }
    

    Pega la URL firmada en el navegador para descargar el archivo de datos. Debes examinar el contenido del archivo para asegurarte de que contenga los datos de la actividad de búsqueda esperada.

  3. Repite el comando anterior para enviar una solicitud autenticada al extremo InitiatePortabilityArchive (opcional).

    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 respuesta debe indicar que se agotó el consentimiento único para el recurso myactivity.search para este usuario.

    ...
      "error":
        {
          "code": 429,
      "message": "Resource has been exhausted (check quota).",
      "status": "RESOURCE_EXHAUSTED"
    }
    
  4. Envía una solicitud autenticada al extremo ResetAuthorization. Esta solicitud revoca todos los permisos de OAuth otorgados por el usuario y te permite llamar a InitiatePortabilityArchive para un grupo de recursos que ya hayas usado.

    curl -H 'Authorization: Bearer your_OAuth_token' -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    https://dataportability.googleapis.com/v1/authorization:reset
    

    En el comando, haz lo siguiente:

    • your_OAuth_token es tu token de OAuth.

    Este comando muestra una respuesta vacía.

  5. Después de restablecer la autorización, envía otra solicitud al extremo InitiatePortabilityArchive (opcional). Usa el mismo comando curl que usaste antes.

    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 respuesta debería mostrar un error porque se revocó el token de OAuth que proporcionaste.

    ...
      "error": {     
        "code": 401,    
            "message": "Request had invalid authentication credentials. Expected
            OAuth 2 access token, login cookie or other valid authentication
            credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
            "status": "UNAUTHENTICATED"
      }