# Develop and publish an oAuth App

**URL:** <https://devforum.zoom.us/t/develop-and-publish-an-oauth-app/6836>\
**Category:** App Marketplace\
**Created:** [November 26, 2019, 10:30pm UTC](https://devforum.zoom.us/t/develop-and-publish-an-oauth-app/6836 "2019-11-26T22:30:20Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ravikumar.boddu](https://avatars.discourse-cdn.com/v4/letter/r/cab0a1/32.png) [@ravikumar.boddu](https://devforum.zoom.us/u/ravikumar.boddu)\
**Post date:** [November 26, 2019, 10:30pm UTC](https://devforum.zoom.us/t/develop-and-publish-an-oauth-app/6836/1 "2019-11-26T22:30:20Z")

</div>

Hi Team,

We are from SumTotal Systems LLC. SumTotal and offer Talent Management solutions. One of key modules of our product is Learning management suite. We are working on an Integration feature with Zoom, where Learning administrators can create Zoom meetings and Assign Instructors from SumTotal administration screens.

To establish authentication between SumTotal and Zoom API, we were suggested to use oAuth app. While creating Account-level oAuth app, we came across following queries:

- The Client ID, Client Secret and Redirect URI needs to be provided at the time building app. If a customer install this app in their zoom account, will they be able to change ClientID and Client Secret for their instance.

- Redirect URI changes from customer to customer ex. Customer 1 will have url [https://cus1.sumtotal.host/oauth/redirect](https://cus1.sumtotal.host/oauth/redirect) while customer 2 will have [https://cus2.sumtotal.host/oauth/redirect](https://cus2.sumtotal.host/oauth/redirect). Some customers opt premised mode of installation. In those cases the domain will be completely different. Is there a way to allow customer to input redirect URI at the time of app installation.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [November 26, 2019, 11:15pm UTC](https://devforum.zoom.us/t/develop-and-publish-an-oauth-app/6836/2 "2019-11-26T23:15:25Z")

</div>

Hey @ravikumar.boddu, thanks for posting and using Zoom!

> [@ravikumar.boddu](#):
>
> The Client ID, Client Secret and Redirect URI needs to be provided at the time building app. If a customer install this app in their zoom account, will they be able to change ClientID and Client Secret for their instance.

No, the user who installs your app does not see the Client Secret, and cannot change either the client ID or Client Secret. For their instance of the installation, you can [request an access\_token](https://marketplace.zoom.us/docs/guides/authorization/oauth/oauth-with-zoom#request-access-token) to make API requests.

> [@ravikumar.boddu](#):
>
> Redirect URI changes from customer to customer ex. Customer 1 will have url [https://cus1.sumtotal.host/oauth/redirect](https://cus1.sumtotal.host/oauth/redirect) while customer 2 will have [https://cus2.sumtotal.host/oauth/redirect](https://cus2.sumtotal.host/oauth/redirect). Some customers opt premised mode of installation. In those cases the domain will be completely different. Is there a way to allow customer to input redirect URI at the time of app installation.

You can either publish 2 Apps to the Marketplace, one per customer, or you can add a `state` query param to the install url to pass data like who that customer is, then read the `state` query param and do the logic you need once they install and authorize your app and land on your redirect url. Notice how I set the `state` query param on the install url and it persists through the install process to your redirect url.

`https://zoom.us/oauth/authorize?client_id=7lstjK9NTyett_oeXtFiE&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A4000?state=customer=cus1`  
\/  
`https://sumtotal.host/oauth/redirect?state=customer=cus1`

`https://zoom.us/oauth/authorize?client_id=7lstjK9NTyett_oeXtFiE&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A4000?state=customer=cus2`  
\/  
`https://sumtotal.host/oauth/redirect?state=customer=cus2`

[https://marketplace.zoom.us/docs/guides/authorization/oauth/oauth-with-zoom#authorization-code](https://marketplace.zoom.us/docs/guides/authorization/oauth/oauth-with-zoom#authorization-code)

See this thread for more info on this question:

> [@Chatbots and geo fencing data](https://devforum.zoom.us/t/chatbots-and-geo-fencing-data/5450):
>
> Hey Zoom Devs, We’re creating a chat bot, which we intend to put through the marketplace app approval process and release to the public. However, we need some guidance on how to create a Zoom Chat Bot app that aligns with our product architecture. We sell to regulated companies like financial institutions. They commonly have requirements that mandate data locality: i.e. all my data has to stay in the US or the UK or the EU. To meet that requirement, we have completely separate data centers tha…

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![ravikumar.boddu](https://avatars.discourse-cdn.com/v4/letter/r/cab0a1/32.png) [@ravikumar.boddu](https://devforum.zoom.us/u/ravikumar.boddu)\
**Post date:** [November 27, 2019, 2:01pm UTC](https://devforum.zoom.us/t/develop-and-publish-an-oauth-app/6836/3 "2019-11-27T14:01:16Z")

</div>

Thank you Tommy. This information helps.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [November 27, 2019, 6:02pm UTC](https://devforum.zoom.us/t/develop-and-publish-an-oauth-app/6836/4 "2019-11-27T18:02:36Z")

</div>

You are welcome, happy to help! 🙂

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![DeveloperBot](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/developerbot/32/12632_2.png) [@DeveloperBot](https://devforum.zoom.us/u/DeveloperBot)\
**Post date:** [August 21, 2020, 7:05pm UTC](https://devforum.zoom.us/t/develop-and-publish-an-oauth-app/6836/5 "2020-08-21T19:05:35Z")

</div>

Closed on August 21, 2020, 7:05pm UTC


