# Joining Meeting Timeout or Browser restriction

**URL:** <https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919>\
**Category:** Meeting SDK\
**Created:** [January 16, 2024, 4:03pm UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919 "2024-01-16T16:03:06Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![abdullahahsin0](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@abdullahahsin0](https://devforum.zoom.us/u/abdullahahsin0)\
**Post date:** [January 16, 2024, 4:03pm UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/1 "2024-01-16T16:03:06Z")

</div>

I’m testing zoom/react-sample-app i create meeting using API in Laravel the meeting created successfully but when i try to join using react-sample-app it show this error

 ![Screenshot 2024-01-16 210200](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/0/8/0893422077eccf0c030e81b63ec37be82ce87fa0.png)

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [January 17, 2024, 5:03am UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/2 "2024-01-17T05:03:29Z")

</div>

@abdullahahsin0 ,

could you share your JWT token and tag me in you response?

---

<div class="post-metadata">

**Author:** ![abdullahahsin0](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@abdullahahsin0](https://devforum.zoom.us/u/abdullahahsin0)\
**Post date:** [January 17, 2024, 7:53am UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/3 "2024-01-17T07:53:09Z")

</div>

**I’m using this package to create meeting in Laravel**

> **[GitHub - JubaerHossain/zoom-laravel: The Laravel Zoom API Client is a...](https://github.com/JubaerHossain/zoom-laravel)**
>
> The Laravel Zoom API Client is a powerful and comprehensive package designed to provide Laravel users with a unified and consistent approach to integrating Zoom APIs into their applications. With t...

**Response of the create meeting is attached.**

 ![Screenshot 2024-01-17 124816](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/7/d/7d3e1c27bbc7d63325cd4472fcd190bae62d1fc2.png)

**I’m Using the meeting id which is receive in this response.**

 ![Screenshot 2024-01-17 125017](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/0/1/01ffd5d719d9eb48fda24e10a2fbe6a70cb2b334.png)

In the above i show you the code of the react-sample-app. i get the authEndpoint using meetingsdk-auth-endpoint-sample in localhost.

and when i click to join meeting button the error comes which i already post,

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [January 17, 2024, 9:07am UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/4 "2024-01-17T09:07:32Z")

</div>

@abdullahahsin0 , I’ll PM you for the JWT token

---

<div class="post-metadata">

**Author:** ![abdullahahsin0](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@abdullahahsin0](https://devforum.zoom.us/u/abdullahahsin0)\
**Post date:** [January 17, 2024, 9:12am UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/5 "2024-01-17T09:12:09Z")

</div>

From Where i get JWT token?

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [January 17, 2024, 9:28am UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/6 "2024-01-17T09:28:51Z")

</div>

@abdullahahsin0 ,

I think I understand what your issue might be. In the account there might be a setting which is blocking users from joining from web browser.

Could you check this setting?

[https://support.zoom.com/hc/en/article?id=zm\_kb&sysparm\_article=KB0067293#:~:text=menu%2C%20click%20Settings.-,Click%20the%20Meeting%20tab.,the%20group%20or%20account%20level](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0067293#:~:text=menu%2C%20click%20Settings.-,Click%20the%20Meeting%20tab.,the%20group%20or%20account%20level).

---

<div class="post-metadata">

**Author:** ![abdullahahsin0](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@abdullahahsin0](https://devforum.zoom.us/u/abdullahahsin0)\
**Post date:** [January 17, 2024, 10:25am UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/7 "2024-01-17T10:25:24Z")

</div>

But when i use the link which is provided in createmeeting api. its work perfectly. but when i try to join meeting using meetingsdk-react-sample-app it show error invalid\_signature

My signature get from meetingsdk-auth-endpoint-sample  
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZGtLZXkiOiJyTzc0RFRZVFRBaTI4ZnJ3QkNoMUV3IiwibW4iOiI3ODM4MzA4NzYwNyIsInJvbGUiOjAsImlhdCI6MTcwNTQ5MDAwMywiZXhwIjoxNzA1NDk3MjAzLCJhcHBLZXkiOiJyTzc0RFRZVFRBaTI4ZnJ3QkNoMUV3IiwidG9rZW5FeHAiOjE3MDU0OTcyMDN9.jdnUIoqve6SdfQPUWB1EuGoovU-nXlh9MiazWPvM3vw

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [January 17, 2024, 12:27pm UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/9 "2024-01-17T12:27:16Z")

</div>

@abdullahahsin0 ,

Could you share where you are getting your sdkKey / appKey?

This should be the clientID found on the Meeting SDK app / General app.

---

<div class="post-metadata">

**Author:** ![sigmazoomadmin](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/sigmazoomadmin/32/53487_2.png) [@sigmazoomadmin](https://devforum.zoom.us/u/sigmazoomadmin)\
**Post date:** [January 17, 2024, 8:27pm UTC](https://devforum.zoom.us/t/joining-meeting-timeout-or-browser-restriction/101919/10 "2024-01-17T20:27:57Z")

</div>

If anyone else encountered this, as well as seeing issues with the 2.x.x sample apps, here is your fix…

Instead of specifying Milliseconds in the LinuxEpochTimestamp, use seconds. Zoom did something to break it. I use c# but you can probably translate this change to any other language easily.

```auto
private long getLinuxEpochTimestamp()
{
    // Zoom uses seconds and not milliseconds now
	return (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;

    // This used to work
	//return (long) DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
}

```

```auto
public string GenerateSignature(int role, long meetingNumber)
{
	// Prevent time sync issue between client signature generation and zoom 
	long timeStamp = this.getLinuxEpochTimestamp();

	long exp = timeStamp + 7200;

	List<Claim> claims = new List<Claim>
		{
			new Claim("sdkKey", _plusConfig.Value.ZoomApiKey),
			new Claim("appKey", _plusConfig.Value.ZoomApiKey),
			new Claim("iat", timeStamp.ToString(), ClaimValueTypes.Integer64),
			new Claim("exp", exp.ToString()),
			new Claim("mn", meetingNumber.ToString(), ClaimValueTypes.Integer64),
			new Claim("role", role.ToString(), ClaimValueTypes.Integer64)
		};

	
	ASCIIEncoding encoding = new ASCIIEncoding();
	byte[] keyByte = encoding.GetBytes(_plusConfig.Value.ZoomApiSecret);
	SymmetricSecurityKey securityKey = new SymmetricSecurityKey(keyByte);
	SigningCredentials credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

	JwtSecurityToken secToken = new JwtSecurityToken(
		null,
		null,
		claims,
		DateTime.UtcNow,
		DateTime.UtcNow.AddHours(2),
		credentials);

	secToken.Payload.Remove("nbf");
	JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
	string signature = handler.WriteToken(secToken);

	return signature;
}

```

The code above generates a signature identical to the one generated by the sample app. Please change your iat and exp from milliseconds to seconds.
