// AQUI ESTÁ O FLUXO PROPOSTO PARA A INTEGRAÇÃO COM O SISTEMA DA SHOPEE: // 1. **Tabela de client_ids e access_tokens**: // - Será necessário ter uma tabela que armazene o `client_id` e o `access_token` da Shopee vinculados ao respectivo `client_id`. // - A tabela também pode armazenar informações como data de expiração do token, para garantir que o token não tenha expirado. // 2. **Carregamento inicial do banco de dados**: // - Durante o início do programa, a tabela será carregada em uma variável global, facilitando a validação no middleware. // - Isso permitirá que o sistema saiba de imediato se já existe um `access_token` válido para o `client_id` fornecido, sem precisar fazer consultas ao banco a cada requisição. // 3. **Endpoints necessários**: // - **Endpoint 1**: Inicializa o fluxo de autenticação com a Shopee. Este endpoint deverá redirecionar o cliente para o processo de autorização na Shopee e receber o `authorization_code` de volta. // - **Endpoint 2**: Recupera o `access_token` da Shopee, caso já tenha sido armazenado na tabela para o `client_id` informado. Este endpoint pode ser chamado periodicamente para verificar se o token ainda é válido ou se precisa ser renovado. // 4. **Comunicação via SSE (Server-Sent Events)**: // - Será necessário configurar uma comunicação via SSE para que o servidor possa notificar o cliente assim que o `access_token` for obtido e validado. // - O SSE servirá como um canal para notificar o cliente, informando quando o processo de autenticação foi concluído com sucesso e o `access_token` está disponível. // 5. **Fluxo no desktop**: // - **Caso o usuário já tenha um `access_token` válido**: // - Ao clicar no botão para iniciar a integração, o sistema verifica primeiro se o `access_token` já existe e não está expirado no servidor. // - Se o token estiver válido, o fluxo segue normalmente, sem necessidade de nova autenticação. // // - **Caso o `access_token` não exista ou esteja expirado**: // - O sistema aguardará a conexão via SSE antes de iniciar o fluxo de autenticação. Isso garante que o cliente será notificado assim que o novo `access_token` estiver disponível. // - Após a conexão com o SSE, o fluxo de autenticação será iniciado, passando pelo processo de obtenção do `authorization_code` e, posteriormente, do `access_token`. // - Assim que o `access_token` for obtido, o sistema enviará uma notificação via SSE para o cliente, informando que a autenticação foi concluída com sucesso. // 6. **Validação do `client_id` no SSE**: // - O servidor SSE deve validar o `client_id` antes de enviar qualquer informação ao cliente. Isso é importante para garantir que as notificações sejam enviadas apenas para clientes válidos e conectados. // - O SSE deve se certificar de que o `client_id` está presente e é válido antes de estabelecer a comunicação e enviar o `access_token` ao cliente. URL_HOMOLOGAÇÃO = "https://openplatform.sandbox.test-stable.shopee.sg" timestamp_window 300 equiva a 5 minutos curl -N \ -H "Accept: text/event-stream" \ -H "X-Client-Id: desktop-commerce-y" \ -H "X-Security-Token: a120cdf7c61d4db16465f633fea8d97a29c6b207103384b017e28da39b7e0796" \ -H "X-Timestamp: 1763289837" \ http://localhost:9001