# Expired signature

**URL:** <https://devforum.zoom.us/t/expired-signature/2572>\
**Category:** Web\
**Created:** [November 20, 2018, 8:30am UTC](https://devforum.zoom.us/t/expired-signature/2572 "2018-11-20T08:30:38Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![udaysasi](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/udaysasi/32/76_2.png) [@udaysasi](https://devforum.zoom.us/u/udaysasi)\
**Post date:** [November 20, 2018, 8:30am UTC](https://devforum.zoom.us/t/expired-signature/2572/1 "2018-11-20T08:30:38Z")

</div>

I am new to Zoom API, trying to get the sample app going by joining an existing ongoing meeting. When I run the sample app, as per instructions here: [https://marketplace.zoom.us/docs/guides/zoom-sdks/Web-Client-SDK](https://marketplace.zoom.us/docs/guides/zoom-sdks/Web-Client-SDK)

I get the following error while trying to join the meeting by entering a name and ongoing meeting id:

{method: “join”, status: false, errorCode: 1, errorMessage: “The signature has expired.”, result: null}

This is happening on the ZoomMtg.join() method. The same had worked 5 hours back. The code has not changed since then (I left work and came home and tried it again). I have no clue on how to get over this. I tried the timeout as was suggested by a user in one of the earlier posts, but that didn’t help.

Hopefully someone can throw some light on this.

Thanks  
-Uday

---

<div class="post-metadata">

**Author:** ![udaysasi](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/udaysasi/32/76_2.png) [@udaysasi](https://devforum.zoom.us/u/udaysasi)\
**Post date:** [November 20, 2018, 8:51am UTC](https://devforum.zoom.us/t/expired-signature/2572/2 "2018-11-20T08:51:41Z")

</div>

Quick update. I moved the init() function inside the success callback of the generateSignature() method and now I get a different error…

```
    var signature = ZoomMtg.generateSignature({
        meetingNumber: meetConfig.meetingNumber,
        apiKey: meetConfig.apiKey,
        apiSecret: meetConfig.apiSecret,
        role: meetConfig.role,
        success: function(res){
            console.log(res.result);
            
            ZoomMtg.init({
                leaveUrl: 'http://www.zoom.us',
                debug: true,
                isSupportAV: true,
                success: function () {
            		ZoomMtg.join({
                                meetingNumber: meetConfig.meetingNumber,
                                userName: meetConfig.userName,
                                passWord: '',
                                userEmail: meetConfig.email,
                                signature: signature,
                                apiKey: meetConfig.apiKey,
                                success: function(res){
                                    console.log('join meeting success');
                                    document.getElementById('nav-tool').style.display = 'none';
                                }
                    });
                }
            });
        }
    });

```

Error:  
{method: “join”, status: false, errorCode: 1, errorMessage: “No permission”, result: null}

I even tried regenerating my API key and secret and using those. That did not help either.

Thanks  
-Uday

---

<div class="post-metadata">

**Author:** ![udaysasi](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/udaysasi/32/76_2.png) [@udaysasi](https://devforum.zoom.us/u/udaysasi)\
**Post date:** [November 21, 2018, 12:05am UTC](https://devforum.zoom.us/t/expired-signature/2572/4 "2018-11-21T00:05:58Z")

</div>

I have one more update.

The original issue “The signature has expired” keeps coming up on one of my laptops (an old Mac running El Captain). I deleted the node\_modules and re-ran “npm install”. No luck. I am using Node v 8.10 and npm v 5.6.0

However when I checkout the same code (sample webapp along with my API key and Secret) to another laptop running MacOS Sierra, it works flawlessly.

Is there a dependency on the OS to get this to work?

Can someone from Zoom please respond?

-Uday

---

<div class="post-metadata">

**Author:** ![michael\_p.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael_p.zoom/32/18105_2.png) [@michael\_p.zoom](https://devforum.zoom.us/u/michael_p.zoom)\
**Post date:** [November 21, 2018, 6:24pm UTC](https://devforum.zoom.us/t/expired-signature/2572/5 "2018-11-21T18:24:40Z")

</div>

Hi @udaysasi,

I believe that you don’t need to include your init function within the generate signature.

1.What is the role that you’re setting, 0 or 1?  
2. After the success function within the join method, can you insert the below code and see what it states within the browser developer console?

```
success: function(res){
                            console.log('join meeting success');
                            document.getElementById('nav-tool').style.display = 'none';
                        },
                        error: function(res){console.log(res)}
```

---

<div class="post-metadata">

**Author:** ![udaysasi](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/udaysasi/32/76_2.png) [@udaysasi](https://devforum.zoom.us/u/udaysasi)\
**Post date:** [November 21, 2018, 7:40pm UTC](https://devforum.zoom.us/t/expired-signature/2572/6 "2018-11-21T19:40:27Z")

</div>

I enabled debug flag on ZoomMtng.init() so it automatically printed the errorCallback and thats where I got that message. I was setting my role to 0.

However, I have a resolution on this.

I noticed that my mac on which zoom sdk was not working as expected, was running El Captain - which is an old OS. I have been ignoring messages to upgrade my OS for a while now. I took this opportunity to upgrade to Mojave last night. (OS was the only difference between my 2 laptops). And after the update, it worked straight away.

I was surprised it had a dependency on Operating System.

@michael_p.zoom, Are there any plans to add more functions to the SDK? Like ability to programmatically view and toggle between participants list and any other features that are available when I use the “web” version to attend a meeting? If so, could you please share some details? Also, Is there a way to detect events using the SDK and handle business logic in callbacks or promises - something similar on the lines of ZoomMtn.on(‘meetingEnd’, function() { /\* do something here \*/ }) etc. Right now, if the meeting ends, it throws a popup and I had hook up my callback to the availability of that popup message.

Thanks a lot for your great work.

-Uday

---

<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, 5:59pm UTC](https://devforum.zoom.us/t/expired-signature/2572/7 "2020-08-21T17:59:43Z")

</div>

Closed on August 21, 2020, 5:59pm UTC


