Expired signature

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

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

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

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

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)}

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