Configurar a interface do usuário

Esta página do tutorial da Pesquisa do Google Cloud mostra como configurar um aplicativo de pesquisa personalizado usando o widget de pesquisa incorporável. Para começar do início deste tutorial, consulte o Tutorial para iniciantes do Cloud Search.

Instalar dependências

  1. Se o conector ainda estiver indexando o repositório, abra um novo shell e continue nele.

  2. Na linha de comando, mude o diretório para cloud-search-samples/end-to-end/search-interface.

  3. Para fazer o download das dependências necessárias para executar o servidor da Web, execute o seguinte comando:

npm install

Criar as credenciais do app de pesquisa

O conector exige credenciais da conta de serviço para chamar as APIs do Cloud Search. Para criar as credenciais:

  1. Volte para o console do Google Cloud.

  2. No painel de navegação à esquerda, clique em Credenciais.

  3. Na lista suspensa Criar credenciais, selecione ID do cliente OAuth. A página "Criar ID do cliente OAuth" vai aparecer.

  4. (Opcional). Se você não tiver configurado a tela de consentimento, clique em CONFIGURAR TELA DE CONSENTIMENTO. A tela "OAuth consent" aparece.

    1. Clique em Interno e em CRIAR. Outra tela de "Consentimento do OAuth" aparece.

    2. Preencha os campos obrigatórios. Para mais instruções, consulte a seção de consentimento do usuário de Como configurar o OAuth 2.0.

  5. Clique na lista suspensa Tipo de aplicativo e selecione Aplicativo da Web.

  6. No campo Nome, digite "tutorial".

  7. No campo Origens JavaScript autorizadas, clique em ADICIONAR URI. Um campo "URIs" vazio aparece.

  8. No campo URIs, insira http://localhost:8080.

  9. Clique em CRIAR. A tela "Cliente OAuth criado" aparece.

  10. Anote o ID do cliente. Esse valor é usado para identificar o aplicativo ao solicitar a autorização do usuário com o OAuth2. A chave secreta do cliente não é necessária para essa implementação.

  11. Clique em OK.

Criar o app de pesquisa

Em seguida, crie um aplicativo de pesquisa no Admin Console. O aplicativo de pesquisa é uma representação virtual da interface de pesquisa e da configuração padrão dela.

  1. Retorne ao Google Admin Console.
  2. Clique no ícone "Apps". A página "Administração de apps" vai aparecer.
  3. Clique em Google Workspace. A página "Administração de apps do Google Workspace" vai aparecer.
  4. Role a tela para baixo e clique em Pesquisa na nuvem. A página "Configurações do Google Workspace" aparece.
  5. Clique em Apps de pesquisa. A página "Pesquisar aplicativos" vai aparecer.
  6. Clique no + amarelo redondo. A caixa de diálogo "Criar um novo aplicativo de pesquisa" vai aparecer.
  7. No campo Nome de exibição, digite "tutorial".
  8. Clique em CRIAR.
  9. Clique no ícone de lápis ao lado do app de pesquisa recém-criado ("Editar app de pesquisa"). A página "Detalhes da pesquisa de aplicativos" vai aparecer.
  10. Anote o ID do app.
  11. À direita de Fontes de dados, clique no ícone de lápis.
  12. Ao lado de "tutorial", clique no botão Ativar. Essa opção ativa a fonte de dados do tutorial para o app de pesquisa recém-criado.
  13. À direita da fonte de dados "tutorial", clique em Opções de exibição.
  14. Verifique todas as facetas.
  15. Clique em SALVAR.
  16. Clique em CONCLUÍDO.

Configurar o aplicativo da Web

Depois de criar as credenciais e o app de pesquisa, atualize a configuração do aplicativo para incluir esses valores da seguinte maneira:

  1. Na linha de comando, mude o diretório para `cloud-search-samples/end-to-end/search-interface/public'.
  2. Abra o arquivo app.js com um editor de texto.
  3. Encontre a variável searchConfig na parte de cima do arquivo.
  4. Substitua [client-id] pelo ID do cliente OAuth criado anteriormente.
  5. Substitua [application-id] pelo ID do aplicativo de pesquisa mencionado na seção anterior.
  6. Salve o arquivo.

Execute o aplicativo

Inicie o aplicativo executando este comando:

npm run start

Consultar o índice

Para consultar o índice usando o widget de pesquisa:

  1. Abra o navegador e acesse http://localhost:8080.
  2. Clique em Fazer login para autorizar o app a consultar o Cloud Search em seu nome.
  3. Na caixa de pesquisa, digite uma consulta, como a palavra "teste", e pressione Enter. A página precisa mostrar os resultados da consulta com facetas e controles de paginação para navegar pelos resultados.

Como revisar o código

As seções restantes examinam como a interface do usuário é criada.

Carregando o widget

O widget e as bibliotecas relacionadas são carregados em duas fases. Primeiro, o script de bootstrap é carregado:

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

Em segundo lugar, o callback onLoad é chamado quando o script está pronto. Em seguida, ele carrega o cliente da API Google, o Login do Google e as bibliotecas de widgets do 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)
}

A inicialização restante do app é processada por initializeApp quando todas as bibliotecas necessárias são carregadas.

Como processar a autorização

Os usuários precisam autorizar o app a fazer consultas em nome deles. Embora o widget possa solicitar a autorização dos usuários, você pode melhorar a experiência do usuário gerenciando a autorização.

Para a interface de pesquisa, o app apresenta duas visualizações diferentes, dependendo do estado de login do usuário.

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 a inicialização, a visualização correta é ativada e os manipuladores de eventos de login e logout são configurados:

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();

  // ...

}

Criação da interface de pesquisa

O widget de pesquisa requer uma pequena quantidade de marcação HTML para a entrada de pesquisa e para armazenar os resultados da pesquisa:

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>

O widget é inicializado e vinculado aos elementos de entrada e contêiner durante a inicialização:

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();

Parabéns, você concluiu o tutorial. Continue lendo para instruções de limpeza.

Anterior Próxima