# Error exchanging code for access token

**URL:** <https://devforum.zoom.us/t/error-exchanging-code-for-access-token/96016>\
**Category:** Authentication\
**Created:** [September 29, 2023, 8:52am UTC](https://devforum.zoom.us/t/error-exchanging-code-for-access-token/96016 "2023-09-29T08:52:50Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![souvikdeb26](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/souvikdeb26/32/51444_2.png) [@souvikdeb26](https://devforum.zoom.us/u/souvikdeb26)\
**Post date:** [September 29, 2023, 8:52am UTC](https://devforum.zoom.us/t/error-exchanging-code-for-access-token/96016/1 "2023-09-29T08:52:50Z")

</div>

* * *

### Format Your New Topic as Follows:

**Description**

Here’s my server.js code:

```auto
// const express = require("express");
const cors = require("cors");
const axios = require("axios");

const app = express();
const port = process.env.PORT || 3001;

app.use(cors());

async function exchangeCodeForAccessToken(authorizationCode) {
  const clientId = "#######";
  const clientSecret = "#####";
  const redirectUri =
    "https://zoom-itegration-backend.onrender.com/oauth-callback";

  const tokenUrl = "https://zoom.us/oauth/token";

  console.log("AUTHORIZATION CODE", authorizationCode);

  const requestBody = {
    grant_type: "authorization_code",
    code: authorizationCode,
    redirect_uri: redirectUri,
  };

  const authHeader = {
    Authorization: `Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString(
      "base64"
    )}`,
  };

  console.log("HELLOOOO OUTSIDE");

  try {
    const response = await axios.post(tokenUrl, requestBody, {
      headers: authHeader,
    });
    console.log("HELOOOOOO RESPONSE", response);

    return response.data;
  } catch (error) {
    console.error("Error exchanging code for access token:", error);
    throw error;
  }
}

app.get("/", (req, res) => {
  res.send({ message: "Hello Home!" });
});

app.get("/api/hello", (req, res) => {
  res.send({ message: "Hello from server!" });
});

app.get("/oauth-callback", async (req, res) => {
  // Handle the OAuth callback here
  const authorizationCode = req.query.code;
  console.log("CODEEEE", authorizationCode);
  const tokenResponse = await exchangeCodeForAccessToken(authorizationCode);
  // const accessToken = tokenResponse.access_token;

  res.send("OAuth callback complete. You can close this window.");
});

app.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});

```

**Error?**

Error exchanging code for access token: AxiosError: Request failed with status code 400  
Sep 29 01:56:10 PM at settle (/opt/render/project/src/backend/node\_modules/axios/dist/node/axios.cjs:1913:12)  
Sep 29 01:56:10 PM at IncomingMessage.handleStreamEnd (/opt/render/project/src/backend/node\_modules/axios/dist/node/axios.cjs:2995:11)  
Sep 29 01:56:10 PM at IncomingMessage.emit (events.js:388:22)  
Sep 29 01:56:10 PM at endReadableNT (internal/streams/readable.js:1336:12)  
Sep 29 01:56:10 PM at processTicksAndRejections (internal/process/task\_queues.js:82:21) {  
Sep 29 01:56:10 PM code: ‘ERR\_BAD\_REQUEST’,

What’s the exact issue here?

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [October 2, 2023, 3:51am UTC](https://devforum.zoom.us/t/error-exchanging-code-for-access-token/96016/2 "2023-10-02T03:51:39Z")

</div>

@souvikdeb26 ,

I’m doing something like this. There is a slight difference in the axios.post section.  
Hope this helps

```auto
    const codeFromQueryString = 'myowncode';

    if (codeFromQueryString && codeFromQueryString.length>=1){
    //get the request token from zoom's oauth

    const url = 'https://zoom.us/oauth/token';
    const data = {
      code: codeFromQueryString,
      grant_type: 'authorization_code',
      redirect_uri: 'https://myredirecturl.cc/handletoken'
    };
    
    const headers = {
      Authorization: `Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString('base64')}`,
      'Content-Type': 'application/x-www-form-urlencoded'
    };
    
    axios.post(url, new URLSearchParams(data).toString(), { headers })
      .then(response => {

  
        console.log(response.data);
        res.status(200).json(response.data);
        // You can access the access_token in response.data.access_token
      })
      .catch(error => {
        console.error(error);
        res(error);
        // Handle any errors here
      });

    }

```
