I am very new to bigbluebutton. I successfully installed bbb on Ubuntu server and enabled API demo. It is working absolutely fine. I am calling API from c# and it is working fine too. I am creating a meeting like below which is working fine.
public CreateMeetingResponse CreateMeeting(CreateMeetingRequest request)
{
var qb = new QueryStringBuilder
{
{"meetingID", request.MeetingID},
{"name", request.Name},
{"attendeePW", request.AttendeePW},
{"moderatorPW", request.ModeratorPW},
{"record", request.Record.ToString()},
{"allowStartStopRecording", request.AllowStartStopRecording.ToString()},
{"autoStartRecording", request.AutoStartRecording.ToString()},
{"voiceBridge", request.VoiceBridge.ToString()},
{"welcome", request.Welcome},
{"recordingmarks", "true"},
{"logoutURL", request.LogoutURL}
};
qb.Add("checksum", GenerateChecksum("create", qb.ToString()));
var createRequest = new RestRequest($"/api/create?{qb}", Method.GET);
var response = Client.Execute<CreateMeetingResponse>(createRequest).Data;
return response;
}
After creating the meeting, i am trying to join the meeting like as below.
public JoinMeetingResponse JoinMeeting(JoinMeetingRequest request)
{
var qb = new QueryStringBuilder
{
{"meetingID", request.MeetingID},
{"fullName", request.FullName},
{"userId", request.UserID},
{"password", request.Password},
{"joinViaHtml5","true" },
{"redirect","false" },
{"guest","true" }
};
qb.Add("checksum", GenerateChecksum("join", qb.ToString()));
var joinRequest = new RestRequest($"/api/join?{qb}", Method.GET);
var joinResponse = Client.Execute<JoinMeetingResponse>(joinRequest);
return new JoinMeetingResponse();
}
The response from bbb server API is "SUCCESS" and message is "You have successfully joined". But when i try to open meeting or join with URL it shows UNAUTHORIZED 401. "Authentication failed due to missing credentials."
I open browser console and it shows:
[18:07:28:0290] DEBUG: clientLogger: Initial connection status change. status: connecting, connected: false https://bbb.adorasoft.net/html5client/7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:121:1031295
7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:9 [18:07:28:0970] DEBUG: clientLogger: Initial connection status change. status: connected, connected: true https://bbb.adorasoft.net/html5client/7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:121:1031295
7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:9 [18:07:28:0971] INFO: clientLogger: Connection to Meteor took 0.68s https://bbb.adorasoft.net/html5client/7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:121:1031466
7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:9 [18:07:29:0142] ERROR: clientLogger: User faced an error on main.joinRouteHandler. g.fetchToken (https://bbb.adorasoft.net/html5client/7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:121:1033747)
7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:9 [18:07:29:0144] ERROR: clientLogger: Encountered error while trying to authenticate t (https://bbb.adorasoft.net/html5client/7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:121:999188)
7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:9 [18:07:29:0146] ERROR: clientLogger: User could not log in HTML5, hit 401 z.renderByState (https://bbb.adorasoft.net/html5client/7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:121:1206397)
7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:9 [18:07:29:0327] ERROR: clientLogger: User could not log in HTML5, hit 401 z.renderByState (https://bbb.adorasoft.net/html5client/7df6acf6cb0f651dba4e71b3adac0efd23889793.js?meteor_js_resource=true:121:1206397)
What i am doing wrong?
So, after investing enough time i got the solution. There was no problem in bigBlueButton. The problem was that "Join" API request from server side.
"The Join request should be made from the client side/Browser"
So what I had to do is instead of passing XML response, I just need to pass the whole Big blue button Join URL with Checksum and redirect = true so whenever someone want to join they will redirect to the meeting directly.