Cómo configurar la interfaz de usuario

En esta página del instructivo de Google Cloud Search, se muestra cómo configurar una aplicación de búsqueda personalizada con el widget de búsqueda incorporable. Para comenzar desde el principio de este instructivo, consulta el instructivo para comenzar a usar Cloud Search.

Instala dependencias

  1. Si el conector aún está indexando el repositorio, abre una shell nueva y continúa allí.

  2. Desde la línea de comandos, cambia el directorio a cloud-search-samples/end-to-end/search-interface.

  3. Si quieres descargar las dependencias necesarias para ejecutar el servidor web, ejecuta el siguiente comando:

npm install

Crea las credenciales de la aplicación de búsqueda

El conector requiere credenciales de cuenta de servicio para llamar a las APIs de Cloud Search. Para crear las credenciales, haz lo siguiente:

  1. Regresa a la consola de Google Cloud.

  2. En el panel de navegación de la izquierda, haz clic en Credenciales.

  3. En la lista desplegable Crear credenciales, selecciona ID de cliente de OAuth. Aparecerá la página "Crear ID de cliente de OAuth".

  4. (Opcional). Si no has configurado la pantalla de consentimiento, haz clic en CONFIGURAR PANTALLA DE CONSENTIMIENTO. Aparecerá la pantalla "Consentimiento de OAuth".

    1. Haz clic en Interno y, luego, en CREAR. Aparecerá otra pantalla de “Consentimiento de OAuth”.

    2. Completa los campos obligatorios. Para obtener más instrucciones, consulta la sección de consentimiento del usuario en Cómo configurar OAuth 2.0.

  5. Haz clic en la lista desplegable Tipo de aplicación y selecciona Aplicación web.

  6. En el campo Nombre, ingresa “tutorial”.

  7. En el campo Orígenes autorizados de JavaScript, haz clic en AGREGAR URI. Aparecerá un campo "URIs" vacío.

  8. En el campo URIs, ingresa http://localhost:8080.

  9. Haz clic en CREAR. Aparecerá la pantalla "Se creó el cliente de OAuth".

  10. Toma nota del ID de cliente. Este valor se usa para identificar la aplicación cuando se solicita la autorización de un usuario con OAuth2. El secreto del cliente no es necesario para esta implementación.

  11. Haz clic en OK.

Crea la aplicación de búsqueda

A continuación, crea una aplicación de búsqueda en la Consola del administrador. La aplicación de búsqueda es una representación virtual de la interfaz de búsqueda y su configuración predeterminada.

  1. Regresa a la Consola del administrador de Google.
  2. Haz clic en el ícono de aplicaciones. Aparecerá la página "Administración de aplicaciones".
  3. Haz clic en Google Workspace. Aparecerá la página “Administración de apps de Google Workspace”.
  4. Desplázate hacia abajo y haz clic en Cloud Search. Aparecerá la página “Configuración de Google Workspace”.
  5. Haz clic en Aplicaciones de búsqueda. Aparecerá la página "Buscar aplicaciones".
  6. Haz clic en el círculo amarillo +. Se mostrará el cuadro de diálogo “Crear una nueva aplicación de búsqueda”.
  7. En el campo Nombre visible (Display name), ingresa “tutorial”.
  8. Haz clic en CREAR.
  9. Haz clic en el ícono de lápiz junto a la aplicación de búsqueda recién creada (“Editar aplicación de búsqueda”). Aparecerá la página "Detalles de la aplicación de búsqueda".
  10. Toma nota del ID de aplicación.
  11. A la derecha de Fuentes de datos, haz clic en el ícono de lápiz.
  12. Junto a “Instructivo”, haz clic en el botón de activación Habilitar. Este botón de activación habilita la fuente de datos del instructivo para la aplicación de búsqueda recién creada.
  13. A la derecha de la fuente de datos del "instructivo", haz clic en Opciones de visualización.
  14. Verifica todas las facetas.
  15. Haz clic en GUARDAR.
  16. Haz clic en LISTO.

Configura la aplicación web

Después de crear las credenciales y la app de búsqueda, actualiza la configuración de la aplicación para incluir estos valores de la siguiente manera:

  1. Desde la línea de comandos, cambia el directorio a “cloud-search-samples/end-to-end/search-interface/public”.
  2. Abre el archivo app.js con un editor de texto.
  3. Busca la variable searchConfig en la parte superior del archivo.
  4. Reemplaza [client-id] por el ID de cliente de OAuth creado anteriormente.
  5. Reemplaza [application-id] por el ID de aplicación de búsqueda que se anotó en la sección anterior.
  6. Guarda el archivo.

Ejecuta la aplicación

Inicia la aplicación con el siguiente comando:

npm run start

Consultar el índice

Para consultar el índice con el widget de búsqueda, haz lo siguiente:

  1. Abre el navegador y ve a http://localhost:8080.
  2. Haz clic en Acceder para autorizar que la aplicación realice consultas en Cloud Search en tu nombre.
  3. En el cuadro de búsqueda, ingresa una consulta, como la palabra “prueba”, y presiona Intro. La página debe mostrar los resultados de la consulta junto con las facetas y los controles de paginación para navegar por ellos.

Revisa el código

En las secciones restantes, se analiza cómo se compila la interfaz de usuario.

Cómo cargar el widget

El widget y las bibliotecas relacionadas se cargan en dos fases. Primero, se carga la secuencia de comandos de arranque:

index.html
<script src="https://apis.google.com/js/api.js?mods=enable_cloud_search_widget&onload=onLoad" async defer></script>

En segundo lugar, se llama a la devolución de llamada onLoad una vez que la secuencia de comandos está lista. Luego, carga el cliente de la API de Google, el Acceso con Google y las bibliotecas del widget de Cloud Search.

app.js
/**
 * Load the cloud search widget & auth libraries. Runs after
 * the initial gapi bootstrap library is ready.
 */
function onLoad() {
  gapi.load('client:auth2:cloudsearch-widget', initializeApp)
}

initializeApp controla la inicialización restante de la app una vez que se cargan todas las bibliotecas necesarias.

Cómo administrar autorizaciones

Los usuarios deben autorizar a la app para que realice consultas en su nombre. Si bien el widget puede solicitar a los usuarios que la autoricen, puedes lograr una mejor experiencia del usuario si controlas la autorización por tu cuenta.

Para la interfaz de búsqueda, la app presenta dos vistas diferentes según el estado de acceso del usuario.

index.html
<div class="content">
  <div id="app" hidden>
    <div id="header">
      <button id="sign-out">Sign-out</button>
    </div>
    <!-- Markup for widget...-->
  </div>
  <div id="welcome" hidden>
    <h1>Cloud Search Tutorial</h1>
    <p>Sign in with your Google account to search.</p>
    <button id="sign-in">Sign-in</button>
  </div>
</div>

Durante la inicialización, se habilita la vista correcta y se configuran los controladores para los eventos de acceso y cierre de sesión:

app.js
/**
 * Initialize the app after loading the Google API client &
 * Cloud Search widget.
 */
async function initializeApp() {
  await gapi.auth2.init({
      'clientId': searchConfig.clientId,
      'scope': 'https://www.googleapis.com/auth/cloud_search.query'
  });

  let auth = gapi.auth2.getAuthInstance();

  // Watch for sign in status changes to update the UI appropriately
  let onSignInChanged = (isSignedIn) => {
    document.getElementById("app").hidden = !isSignedIn;
    document.getElementById("welcome").hidden = isSignedIn;
    if (resultsContainer) {
      resultsContainer.clear();
    }
  }
  auth.isSignedIn.listen(onSignInChanged);
  onSignInChanged(auth.isSignedIn.get()); // Trigger with current status

  // Connect sign-in/sign-out buttons
  document.getElementById("sign-in").onclick = (e) =>  auth.signIn();
  document.getElementById("sign-out").onclick = (e) => auth.signOut();

  // ...

}

Crea la interfaz de búsqueda

El widget de búsqueda requiere una pequeña cantidad de lenguaje de marcado HTML para la entrada de la búsqueda y para conservar los resultados:

index.html
<div id="search_bar">
  <div>
    <div id="suggestions_anchor">
      <input type="text" id="search_input" placeholder="Search for...">
    </div>
  </div>
</div>
<div id="facet_results" ></div>
<div id="search_results" ></div>

El widget se inicializa y se vincula a los elementos de entrada y contenedor durante la inicialización:

app.js
gapi.config.update('cloudsearch.config/apiVersion', 'v1');
resultsContainer = new gapi.cloudsearch.widget.resultscontainer.Builder()
  .setSearchApplicationId(searchConfig.searchAppId)
  .setSearchResultsContainerElement(document.getElementById('search_results'))
  .setFacetResultsContainerElement(document.getElementById('facet_results'))
  .build();

const searchBox = new gapi.cloudsearch.widget.searchbox.Builder()
  .setSearchApplicationId(searchConfig.searchAppId)
  .setInput(document.getElementById('search_input'))
  .setAnchor(document.getElementById('suggestions_anchor'))
  .setResultsContainer(resultsContainer)
  .build();

¡Felicitaciones! Completaste correctamente el instructivo. Continúa con las instrucciones de limpieza.

Anterior Siguiente