Inquiry Regarding "Application Not Found" Error After Publishing App

Hello Zoom Support,

I recently published my app on the Zoom App Marketplace, but users are encountering an error when trying to access it. The error message displayed is: “Application not found. It may have been deleted or you don’t have permission to view it right now.”

Could you please assist me in understanding why this error persists even after my app has been successfully published? Resolving this issue promptly is essential to ensure users can access the app without any problems.

Additionally, I noticed that my app does not require users to consent or authorize before encountering this error.

Here is the relevant part of my code:

//AUTH-URL
const getAuthorizationUrlToCreateZoomEventController = async (
  req: Request<any, any, any>,
  res: Response<any>,
): Promise<any> => {
  try {
    const query = {
      response_type: 'code',
      client_id: OAUTH.ZOOM.CLIENT_ID_ZOOM,
      redirect_uri: OAUTH.ZOOM.REDIRECT_URL_ZOOM,
    };

    const queryParams = new URLSearchParams(query).toString();

    const link = `${OAUTH.ZOOM.ZOOM_API}/oauth/authorize?${queryParams}`;

    res.status(200).json({ link });
  } catch (err) {
    handleError(res, err, err);
  }
};

//AUTHORIZE
const authorizeZoom = async (req: Request, res: Response): Promise<void> => {
  try {
    const { code } = req.query;

    const user = req.session.user?.email as string;

    const accessTokenRecord = await AccessTokenModel.findOne({
      user,
      provider: 'zoom',
    });

    if (!accessTokenRecord) {
      const params = {
        grant_type: 'authorization_code',
        code,
        redirect_uri: OAUTH.ZOOM.REDIRECT_URL_ZOOM,
      };

      const credentials = `${OAUTH.ZOOM.CLIENT_ID_ZOOM}:${OAUTH.ZOOM.CLIENT_SECRET_ZOOM}`;

      const auth = {
        Authorization: `Basic ${Buffer.from(credentials).toString('base64')}`,
      };

      const response = await axios.post(
        `${OAUTH.ZOOM.ZOOM_API}oauth/token`,
        null,
        { params, headers: auth },
      );

      const accessToken = response.data.access_token;
      const { aid } = (jwt.decode(accessToken) as JwtPayload) || null;
      const refreshToken = response.data.refresh_token;
      const expiry = response.data.expires_in;
      const expiryTime = new Date(Date.now() + expiry * 1000);

      await AccessTokenModel.create({
        user,
        aid,
        accessToken,
        refreshToken,
        provider: 'zoom',
        expiryTime,
      });

      res.redirect(`${ALLOWED_HOSTNAMES.split(',')[0]}/calendar/plugins`);
    } else {
      const { refreshToken, expiryTime } = accessTokenRecord;
      // Check if access token is expired
      if (isAccessTokenExpired(expiryTime)) {
        // If expired, refresh the access token
        const newToken = await refreshTokenForAccessToken(refreshToken);
        const { aid } =
          (jwt.decode(newToken.access_token) as JwtPayload) || null;

        // Update the access token in the database
        await AccessTokenModel.findByIdAndUpdate(accessTokenRecord._id, {
          aid,
          accessToken: newToken.access_token,
          expiryTime: new Date(Date.now() + newToken.expires_in),
        });
        res.redirect(`${ALLOWED_HOSTNAMES.split(',')[0]}/calendar/plugins`);
      } else {
        res.redirect(`${ALLOWED_HOSTNAMES.split(',')[0]}/calendar/plugins`);
      }
    }
  } catch (err: any) {
    res.status(500).json({ err });
  }
};

Your prompt attention and assistance in resolving this matter would be greatly appreciated.

Thank you for your support. @elisa.zoom @kwaku.nyante @jenzushsu. My app’s name is ‘Calen360’: App Marketplace.

Hi @peterekhator
Sorry for the late reply here! I was out on a leave
Have you been able to fix this issue?