Can't validate event notification endpoint URL

Hello,

How to validate the ‘event notification endpoint URL’?

I am also facing the same issue.

Hello @littlelaureates and @sales4
Thank you for reaching out to the Zoom Developer Forum and welcome to our community, I am happy to help here!

Starting earlier this year, we require that you manually trigger webhook validation when you add a new webhook or make changes to an existing one.

Here is the link to our Docs:
https://marketplace.zoom.us/docs/api-reference/webhook-reference/#validate-your-webhook-endpoint

We also have a sample app available with the implementation for this feature:

Let me know if this helps
Best,
Elisa

Hello,

Thank you for the reply.

But I have a WordPress website and I am using this plugin**( Video Conferencing with Zoom Pro)** on my website to integrate Zoom.

So please let me know, how to validate webhook for my WordPress website with that plugin.

HI, @sales4 @littlelaureates Please watch the session here on how to enable Webhooks → here.

I’m also having difficulty validating my event notification endpoint URL. I’m receiving the message “URL validation failed. Try again later.”

I’m following the instructions when creating the hash and returning a JSON object in the response, of which matches the format in the documentation.

Please see my code below and response being returned to ZOOM, which matches the sample.

It is working fine.
:point_down:

Hello,

I am using this plugin: Video Conferencing with Zoom Pro

I have copied the endpoint URL from here: Screenshot by Lightshot

How to validate that using PHP code?

So please check and let me know.

@sales4 @sfaraclas @littlelaureates Here is C# working code :point_down:

    [HttpPost(Name = "events")]
    public ActionResult Events(ValidateUrlEvent notification)
    {
        var encoding = new System.Text.ASCIIEncoding();

        var sha256 = new System.Security.Cryptography.HMACSHA256();
        sha256.Key = encoding.GetBytes("Your Event Secret Token");

        var hash = sha256.ComputeHash(encoding.GetBytes(notification.payload.plainToken));

        var hashed=ToHex(hash,false);

        return Ok(
            new
            {
                plainToken = notification.payload.plainToken,
                encryptedToken = hashed
            }
        );
    }

    private static string ToHex(byte[] bytes, bool upperCase)
    {
        StringBuilder result = new StringBuilder(bytes.Length * 2);
        for (int i = 0; i < bytes.Length; i++)
            result.Append(bytes[i].ToString(upperCase ? "X2" : "x2"));
        return result.ToString();
    }

1 Like

@freelancer.nak

Thanks very much!! My webhook was accepted.

The problem was the way I converted the hashed token to HEX, which was “Convert.ToHexString(hash)”.

Upon only replacing that part, the validation was accepted.

Thanks again.

Glad it helped :smile:, Welcome & Thanks

1 Like

Glad to hear you were about to resolve the issue, @sfaraclas!

@freelancer.nak,

Thank you for sharing the solution with the Developer forum. It will be beneficial to other developers who are looking to solve a similar problem. To further contribute to the developer community, we encourage you to consider posting a write of your solution in the showcase category of our forum.

Thank you for your contribution to the Zoom Developer forum!

1 Like

Hi @freelancer.nak , I was checking your code and try out it my end, but doesn’t work:
I’m using a Azure function as below, and never validates my endpoint URL. Where could be my error?

 [FunctionName("Events")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = "Zoom")] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string name = req.Query["name"];
            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var data = JsonConvert.DeserializeObject<DataResponse>(requestBody);
            var encoding = new System.Text.ASCIIEncoding();
            var sha256 = new System.Security.Cryptography.HMACSHA256();
            sha256.Key = encoding.GetBytes("Here I put my Secret event token");
            var hash = sha256.ComputeHash(encoding.GetBytes(data.PayLoad.PlainToken));
            var hashed = ToHex(hash, false);

            return new OkObjectResult(new
            {
                plainToken = data.PayLoad.PlainToken,
                encryptedToken = hashed
            });
        }

Our listener web service is receiving the Zoom event notification endpoint validation request (endpoint.url_validation), but we are not able to get it to Validate, following the C# example above.

The current event notification secret token on our Zoom OAuth app is “whIR8xqZQ4eGjuq1UfSWVw”. Following is the JSON response being generated (and sent with http code 200) when receiving the endpoint.url_validation event payload.

{"plainToken":"NIhxV-7SRRCYJDVa9J2vUQ","encryptedToken":"da32418f55b8c499cc59645f2298bbf8f74cd6ea88784a986f0e1b1562dde3d6"}

Is the encryptedToken hashed value correct? Or, is there another reason it is failing?

Same issue, but zoom did not support

I’ve even tried passing back in the http response from our listener the following JSON structure. However, this did not work either. I saw this JSON structure in another zoom dev forum article, posted by a user who got validation working after much difficulty.

{"message":{"plainToken":"NIhxV-7SRRCYJDVa9J2vUQ","encryptedToken":"da32418f55b8c499cc59645f2298bbf8f74cd6ea88784a986f0e1b1562dde3d6"},"status":200}

Hi @ym.engineering
sorry to hear that you are having issues validating your endpoint.
I just wanted to check in with you to see if you were able to troubleshoot this issue or are you still looking for assitance?

@vladimir.rivera Please verify that is there 302 redirect when you are sending POST request to your Azure function using Postman?

@ym.engineering Hope you will be fine.

You are using Azure functions or ASP.Net?