Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

89
Vistas
Heroku golpea Express API más que localhost

Tengo una aplicación React/Express implementada en Heroku. El problema que tengo es que cuando trabajo en localhost, se llama una vez a la API de inicio de sesión básica como se esperaba por la forma en que se realizó el componente React.

 const [searchParams, setSearchParams] = useSearchParams(); let code = searchParams.get("code"); const [state, setState] = useState({ data: null, loading: true }); useEffect(() => { setState((state) => ({ data: state.data, loading: true, })); const getData = async () => { console.log("helloeoeoeoeo"); try { await fetch("https://statifyme.herokuapp.com/login", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ code }), }) .then((res) => { if (res.ok) { return res.json(); } else { throw new Error("Failed"); } }) .then((resJson) => { let data = JSON.parse(resJson.response); setState({ data: data, loading: false }); }); } catch (error) { console.log(error); } }; getData(); }, []); if (!state.loading) { return { loading: state.loading, access_token: state.data.access_token }; } }

Por el contrario, después de cambiar a Heroku, la llamada API de inicio de sesión se llama tres veces, lo que termina en un error general (el código de autorización de OAuth2 caduca después de la primera llamada, por lo tanto, las siguientes dos llamadas devuelven un error).

Así es como se ve la llamada a la API Express:

 app.post("/login", function (req, res) { var code = req.body.code || null; var state = req.body.state || null; console.log({ code }); var options = { method: "POST", url: "https://accounts.spotify.com/api/token", headers: { "Content-Type": "application/x-www-form-urlencoded", }, form: { grant_type: "authorization_code", redirect_uri, code, client_id, client_secret, }, }; request.post(options, function (error, response, body) { if (error) throw new Error(error); let data = JSON.parse(body); console.log(data.refresh_token); res.cookie("refresh_token", data.refresh_token, { maxAge: 30 * 24 * 3600 * 1000, }); // res.cookie("access_token", data.access_token, { // maxAge: data.expires_in * 1000, // }); res.json({ response: response.body, }); }); });

Necesito la llamada /login solo una vez, ya que trabajaré con tokens de actualización después, ¿hay alguna forma de evitar que Heroku se comporte o un método por el cual pueda restringir la llamada a una sola instancia y bloquearla después?

Gracias.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda