Oauth token request response 23: Data required

Description
Unable to retrieve token in Qsys/LUA.
The code works in Postman, but not in the LUA implementation used by Q-SYS.
I’m using the Server-to-Server Oauth App.

When I try to get a token in the LUA code, I get a message in red : “23: Data required”.
Line 23 is the HttpClient.Upload command.

Does this indicates that zoom.us/oauth is requiring more info from my Q-SYS device’s request ?

Here’s the code, (with my base64 username encode removed):

HttpClient.Upload
{
Url = “https://zoom.us/oauth/token?grant_type=account_credentials&account_id=iN67vHr6Q-K47u0uVDgoAw”,
Method = “POST”,

Headers = {
Authorization = “Basic base64 encoded username:password”,
Content_Type = “application/json”,
Accept = “/”,
Accept_Encoding = “gzip, deflate, br”,
Connection = “keep-alive”,

},
EventHandler = done4
}
end

If it works in Postman there may be something with the configuration in that system. Is there support available on their end? I’m not familiar.

In the same Qsys Design file, I have good control REST control of another 3rd party device, which I had tested in Postman and implemented in Qsys/ LUA with no issues.

Qsys tech support says ZOOM must be requesting info that I am not providing, but I don’t see any reference to any other parameters or headers that I am missing. Can you confirm exactly which data must be supplied for a successful POST request to ZOOM ? thanks!

So exactly which data does Zoom require for a successful token request? thanks!
-Henry

Can you please share screenshots of your Postman set up since it is successful? Are you using our public workspace?

I overlooked this before, but modify your Headers. It should be

Host: zoom.us
Authorization: Basic [Client_ID:ClientSecret]

You were missing the Host field. You don’t need content_type since we have query parameters in the URL for Server-to-Server OAuth.

Testing in Postman, when I have the Host header removed, I get bad request:

With host selected, I yield a successful response with token:

Let me know if that works!

Redacted

Above is a screen shot of the working Postman session. notice some headers are calculated when request is sent.

Here is a screenshot of the LUA code ( I do have the host header in there. I’ve tried this many different ways. Notice that I’m using server -to-server oauth.

Redacted

Can you please confirm exactly what headers are required to request an Oauth token? I’ve read every zoom publication and watched every youtube vid I can find. They all show how to make postman retrieve a token, but clearly Postman is supplying some “data” that I am missing when moving the request over to LUA. I have successfully implemented POST requests in LUA, but with this ZOOM Oauth request, I’m stuck. thanks, Henry

Hi @henry.kyburg , I had to redact your post as we should share sensitive info like account id and tokens on a public forum.

What I did notice about your request in LUA is the Postman token on line 39. Why is this included in the LUA request? You should not transfer Postman specific request details to the other platform.

Here are some more code samples for making the POST request via terminal command line or javascript:

https://marketplace.zoom.us/docs/guides/build/server-to-server-oauth-app/#use-account-credentials-to-get-an-access-token