Please try helping me … i am stuck in this from past 20days
Error Joining {type: ‘JOIN_MEETING_FAILED’, reason: ‘This account does not exist or does not belong to you’, errorCode: 200}
Description
Error Joining {type: ‘JOIN_MEETING_FAILED’, reason: ‘This account does not exist or does not belong to you’, errorCode: 200}
Browser Console Error
Error Joining {type: ‘JOIN_MEETING_FAILED’, reason: ‘This account does not exist or does not belong to you’, errorCode: 200}
Which Web Video SDK version?
“@zoom/videosdk”: “^1.7.0”,
“jsrsasign”: “^10.8.1”,
“jsrsasign-util”: “^1.0.5”,
Video SDK Code Snippets
App.js
import ‘./App.css’;
import React, { useEffect, useContext, useState } from ‘react’;
import { BrowserRouter as Router, Routes, Route } from ‘react-router-dom’;
import { message } from ‘antd’;
import ZoomVideo from ‘@zoom/videosdk’;
import ZoomContext from ‘./context/zoom-context’;
import VideoContainer from ‘…/src/Feature/Video’;
import LoadingLayout from ‘./Feature/LoadingLayout’;
import mediaContext from ‘./context/media-context’;
import Home from ‘./Feature/Home’;
import { generateSessionToken } from ‘./components/signature’;
function App(props) {
const {
meetingArgs: { sdkKey, topic, signature, name, password }
} = props
const [loading, setIsLoading] = useState(true);
const [loadingText, setLoadingText] = useState(‘’);
const [mediaStream, setMediaStream] = useState();
const [status, setStatus] = useState(false);
const client = useContext(ZoomContext);
const sessionConfig = {
sdkKey: ‘’,
sdkSecret: ‘’,
topic: ‘Call handle’,
password: ‘123’,
name: ‘Cynthia’,
sessionKey: ‘’,
user_identity: ‘’,
role: ‘1’
};
const sessionToken = generateSessionToken(
sessionConfig.sdkKey,
sessionConfig.sdkSecret,
sessionConfig.topic,
sessionConfig.password,
sessionConfig.sessionKey,
sessionConfig.user_identity,
sessionConfig.role
);
useEffect(() => {
const init = async () => {
client.init(‘US-EN’, ‘CDN’)
console.log(“Signature frontEnd”, sessionToken);
try {
setLoadingText(‘Joining Session…’)
await client.join(topic, sessionToken, name, password);
const stream = client.getMediaStream();
setMediaStream(stream)
setIsLoading(false);
} catch (err) {
console.log('Error Joining', err);
setIsLoading(false);
message.error(err.reason)
}
}
init();
return () => {
ZoomVideo.destroyClient()
}
}, [sdkKey, signature, client, topic, name, password])
return (
{loading && <LoadingLayout content={loadingText} />}
{!loading && (
<mediaContext.Provider value={mediaStream}>
<Router>
<Routes>
<Route path="/" element={<Home props={props} status={status} />} />
<Route path="/video" element={<VideoContainer />} />
</Routes>
</Router>
</mediaContext.Provider>
)}
</div>
);
}
export default App;
signature.js
import { KJUR } from ‘jsrsasign’;
/**
-
A sample function to generate a token to join a video SDK session
-
In a production app, this should be generated by the server – never the frontend –
-
as it is very insecure
-
@param sdkKey your video SDK key
-
@param sdkSecret your video SDK secret
-
@param topic your session topic
-
@param passWord your session password
*/
// eslint-disable-next-line import/prefer-default-export
export function generateSessionToken(
sdkKey,
sdkSecret,
topic,
passWord = ‘’,
sessionKey = ‘’,
userIdentity = ‘’,
roleType = 1,
) {
let signature = ‘’;
try {
const iat = Math.round(new Date().getTime() / 1000);
const exp = iat + 60 * 60 * 2;// Header
const oHeader = { alg: ‘HS256’, typ: ‘JWT’ };
// Payload
const oPayload = {
app_key: sdkKey,
iat,
exp,
tpc: topic,
pwd: passWord,
user_identity: userIdentity,
session_key: sessionKey,
role_type: roleType, // role=1, host, role=0 is attendee, only role=1 can start session when session not start
};
const sHeader = JSON.stringify(oHeader);
const sPayload = JSON.stringify(oPayload);
signature = KJUR.jws.JWS.sign(‘HS256’, sHeader, sPayload, sdkSecret);
} catch (e) {
console.error(e);
}
// console.log(‘Signature’,signature);
return signature;
}
export function isSupportWebCodecs(){
return typeof MediaStreamTrackProcessor ===‘function’
}
export function isAndroidBrowser() {
return /android/i.test(navigator.userAgent);
}
export function isSupportOffscreenCanvas() {
return typeof OffscreenCanvas === ‘function’;
}