# Dynamic Installation and Deauthorization URLs

**URL:** <https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447>\
**Category:** API and Webhooks\
**Created:** [March 6, 2020, 6:45pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447 "2020-03-06T18:45:21Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![darren](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/darren/32/3265_2.png) [@darren](https://devforum.zoom.us/u/darren)\
**Post date:** [March 6, 2020, 6:45pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/1 "2020-03-06T18:45:21Z")

</div>

We have an OAuth application which enables Zoom users to connect their existing Zoom user account to our service (Breezy HR) as an option for live video interviews.

Our application architecture (with many thousands of customers) allows a single user to be a member of multiple companies, each company has a unique URL path inside of our application with context-specific settings. For example, a user may be a recruiter for Zoom and for Google with a unique set of connected apps and related user information but with the same user account.

In our software the URL path is templated to include a “friendly” identifier for each company. For example, using the Zoom/Google information above, while the same user was in the Zoom company context their URL may be [https://app.breezy.hr/c/zoom/user/settings](https://app.breezy.hr/c/zoom/user/settings) when they were in the Google context it would be [https://app.breezy.hr/c/google/users/settings](https://app.breezy.hr/c/google/users/settings)

Based on the submission criteria for publishing, this is posing some seemingly insurmountable problems for us. One is the form of the required Deauthorization URL, the other is the installation URL. In both for cases, the URL is unique to both the company and the user instance, there is no single URL possible for either.

I’m wondering how we can overcome this barrier so we can get our integration in the hands of external users.

---

<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:** [March 6, 2020, 8:36pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/2 "2020-03-06T20:36:49Z")

</div>

Hey @darren,

I understand your architecture of the url paths.

I don’t see the issue for the DeAuth url because that URL is for accepting a POST request with the Zoom user in the payload, so I think this would not affect your company specific URL paths. (Of course correct me if I am wrong.)

As for the Installation URL, you could include the company slug in a query param at the end of the install URL, which persists through the OAuth flow, and handle the redirect once you the user lands on the redirect URL.

For example:

`{oauth_zoom_install_url}?state=zoom`  
`{oauth_zoom_install_url}?state=google`

After install and redirect:

`{oauth_redirect_url}?state=zoom`  
`{oauth_redirect_url}?state=google`

See the second part of my post here for more details:

> [@Develop and publish an oAuth App](https://devforum.zoom.us/t/develop-and-publish-an-oauth-app/6836/2):
>
> Hey @ravikumar.boddu, thanks for posting and using Zoom! 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. 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 o…

Let me know if that helps!

Thanks  
Tommy

---

<div class="post-metadata">

**Author:** ![darren](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/darren/32/3265_2.png) [@darren](https://devforum.zoom.us/u/darren)\
**Post date:** [March 6, 2020, 8:48pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/3 "2020-03-06T20:48:04Z")

</div>

@tommy thanks. Yes, that should work on the DeAuth. I wasn’t sure if it was a path you’d send the user to or if it was an API request.

For the installation URL, what I’m wondering about what we should enter for the URL but again, it may have just been a misunderstanding. We already have this working on our end with multiple customers, it was more a matter of what you want us to provide.

Sounds like you’re just asking what our initial OAuth endpoint is which initiates the 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:** [March 6, 2020, 9:04pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/4 "2020-03-06T21:04:32Z")

</div>

Hey @darren,

Yeah to clarify on the installation URL, do you mean the redirect url, install URL, or the Install from your site url?

Redirect URL:  
 ![Screen Shot 2020-03-06 at 2.02.18 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/2X/0/0525ed7094b2281740d2dc2d035670f5e519b6e2.png)  
Install URL:  
 ![Screen Shot 2020-03-06 at 2.02.35 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/2X/e/e05f60194e345e263a5c4a4ab3a62a3e4ed2eb75.png)  
Visit Site to Install URL:  
 ![Screen Shot 2020-03-06 at 2.02.25 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/2X/9/9d7e7eeaba5d6e59a5dcb03d15e246c1cc9b337c.png)

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![darren](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/darren/32/3265_2.png) [@darren](https://devforum.zoom.us/u/darren)\
**Post date:** [March 6, 2020, 9:46pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/5 "2020-03-06T21:46:19Z")

</div>

The “Direct landing URL”

---

<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:** [March 6, 2020, 10:02pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/6 "2020-03-06T22:02:55Z")

</div>

Hey @darren,

I would suggest using the Install from marketplace flow.

Visit site to install is for apps that need you to install their app like this Spark: [https://marketplace.zoom.us/apps/tmqvkldFT3qKBBRPso6Djg](https://marketplace.zoom.us/apps/tmqvkldFT3qKBBRPso6Djg)

It does not affect you using the Install URL in your application. 🙂

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![peyterkim](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/peyterkim/32/7840_2.png) [@peyterkim](https://devforum.zoom.us/u/peyterkim)\
**Post date:** [May 6, 2020, 5:24pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/7 "2020-05-06T17:24:19Z")

</div>

hey @tommy ,

In darren’s case, what would an example deauthorization URL look like? Would something like [https://any.breezy.hr/zoom/deauthorize](https://any.breezy.hr/zoom/deauthorize) work? Also, what if I support multiple top-level domains like [https://any.breezy.co.uk/zoom/deauthorize](https://any.breezy.co.uk/zoom/deauthorize). Could the domain extension portion also be handled by the “any” wildcard?

---

<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:** [May 12, 2020, 4:51pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/8 "2020-05-12T16:51:30Z")

</div>

Hey @peyterkim,

Currently we only support one deauthorization endpoint.

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, 9:16pm UTC](https://devforum.zoom.us/t/dynamic-installation-and-deauthorization-urls/8447/9 "2020-08-21T21:16:11Z")

</div>

Closed on August 21, 2020, 9:16pm UTC


