Unexpected behavior with zoomSdk.openUrl

Problem:
zoomSdk.openUrl() is not behaving as expected.
openUrl() returns {message: "success"} but nothing happens, the system browser is not invoked.

The docs [1][2] state it Opens a URL in the system browser of a user’s device.

What is the correct way to call this API so that behavior can happen?

Context:
I have ensured that:

  • openUrl is in the config eg. config({ capabilities: [ 'openUrl', ...],})
  • the url being called is whitelisted in the App
  • Included in package.json like such: dependencies": { ... "@zoom/appssdk": "^0.16.2", ... }

Example of how it is used in current code:

const externalUrl = async () => {
window.zoomSdk.openUrl({url: 'https://example.com/',}).then((result) => {
      console.log('openUrl response:', result)
    })

Related Docs - I have reviewed the following docs:
[1] https://marketplace.zoom.us/docs/beta-docs/zoom-apps/js-sdk/apis/#openurlurloptions
[2] ZoomSdk | @zoom/appssdk - v0.16.2
[3] zoomapps-advancedsample-react/backend/api/thirdpartyauth at main · zoom/zoomapps-advancedsample-react · GitHub

Thanks!

Can you please confirm if you are adding domain of the URL to the Domain allow list in marketplace (where you configured your app) ?

For example, if I wanted to open google.com using openUrl, I would add it like this

Hi @narmadaravali :wave:

Yes; it is added to Domain allow list (both with and without www.).

And incase it was a curiosity, I also regenerated the publishable URL and re-installed the app after updating the Domain allow list.

The below code works

const externalUrl = async () => {
        window.zoomSdk
          .openUrl({ url: "https://www.google.com/" })
          .then((result) => {
            console.log("openUrl response:", result);
          });
      };

 externalUrl();

In the code you pasted, you are assigning an asynchronous function to a variable but not calling it. externalUrl();

@narmadaravali, thanks, I am calling it. I just didnt show the calling code as I thought it was implied. But the calling code looks like this:

<a className="font-weight-bold ml-1" onClick={externalUrl} > Example Text </a>

Are there any other conditions that need to be true for this to work?
And in your case did it successfully open system browser with https://www.google.com/ ? Or was success the console log? B/c it is successfully logging to console but not opening system browser on my end.

Yes, it opened google.com in my browser. Do you see any CSP blocking errors in console?

There are no CSP errors in console just the console logs from the externalURL function. I am having trouble uploading screenshots to the forum right now but console just has:

[Log] Made it into externalUrl
[Log] ZoomSDK Footer: – Proxy {_version: "0.16.2", _postMessage: function, _clientVersion: "5.10.4.6592", …} 
[Log] openUrl response: – {message: "success"}

Which is a print of the sdk object from inside of externalUrl and that it was able to call .openUrl and got response {message: "success"} but still not experiencing the browser window open.

Can you please update your client version to latest (5.11.3) and see if it’s still happening. I am trying to identify the cause here.

Okay, updated from Client Version: 5.10.4 (6592) to Client Version: 5.11.3 (9065)
The behavior is still the same, no system browser invoked.

Can you please do below steps in order and let me know your status?

  1. After adding URL domain to allow list in marketplace, Generate publishable URL and reinstall the app.
  2. Make sure zoomSdk.config response object doesn’t have “openUrl” in “unsupportedApis” list.

zoomSdk.config response object looks like this

{
   "clientVersion": "5.11.1.8356",
   "browserVersion": "applewebkit/17613.2.7.1.8",
   "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)",
   "auth": {
       "status": "authorized",
       "upgradable": true
    },
   "unsupportedApis": [],
   "runningContext": "inMainClient"
}
1 Like

Looking a the response object for zoomSdk.config seems to have exposed a core issue:

auth: {status: "authorized", upgradable: true}
browserVersion: "applewebkit/17612.1.29.5"
clientVersion: "5.11.3.9065"
product: "desktop"
runningContext: "inMainClient"
unsupportedApis: ["getMeetingContext", "openUrl"] 
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)"

I am going to attempt re-generating URL after re-adding this to ZoomSDK API features.
I could have sworn I did this first…

The issue was that OpenUrl was not selected in ZoomSDK API features.
Looking at the response from zoomSdk.config was very helpful!

Thank you @narmadaravali :pray:

2 Likes