Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

85
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!