Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

358
Visualizações
Gmail API: Connection Refused

When calling getCode(), getToken(code), and getEmailData(token) from the below class in succession, I get the error POST http://localhost:9000/api/email net::ERR_CONNECTION_REFUSED on

const {
      data: { messagesTotal },
      errors,
    } = await this.gmailClient.users.getProfile({
      userId: "me",
    });

I'm not able to figure out why this is, and it's the case across users, with a throttle, and with the list labels function as well. Anyone know what might be the issue?

export default class GmailClient {
  authClient;
  gmailClient;
  SCOPES = ["https://www.googleapis.com/auth/gmail.readonly"];
  constructor() {
    //grab the credentials from the json file
    const credentials = JSON.parse(
      fs.readFileSync("controllers/credentials.json").toString()
    );
    const { client_secret, client_id, redirect_uris } = credentials.web;

    this.authClient = new google.auth.OAuth2(
      client_id,
      client_secret,
      "http://localhost:3000"
    );
    this.gmailClient = google.gmail({ version: "v1", auth: this.authClient });
  }

  async getEmailData(token) {
    // no creds saved
    if (!this.authClient.credentials?.refresh_token) {
      this.authClient.setCredentials(token);
      this.gmailClient = google.gmail({ version: "v1", auth: this.authClient });
    }

    const {
      data: { messagesTotal },
      errors,
    } = await this.gmailClient.users.getProfile({
      userId: "me",
    });

    console.log("Error", errors);

    return { labels: [`Messages total ${messagesTotal}`] };
  }

  getCode() {
    const authUrl = this.authClient.generateAuthUrl({
      access_type: "offline",
      scope: this.SCOPES,
    });
    return { authUrl };
  }

  async getToken(code) {
    try {
      const { tokens } = await this.authClient.getToken(code);
      this.authClient.setCredentials(tokens);
      return { token: tokens };
    } catch (err) {
      console.log("Error: Bad User Code: ", err);
      return res.json({ token: null });
    }
  }
}
about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

My patch for this was using

axiosRetry(axios, {
  retries: 3,
  retryDelay: (retryCount) => {
    console.log(`Request retry attempt: ${retryCount}`);
    return retryCount * 2000;
  },
  retryCondition: (error) => {
    console.log("Retrying on error: ", error);
    return error || error.response.status === 503;
  },
});
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda