Which user type should i choose?

I read many documents and still be confused now.
I’ve currently integrated SDK with my mobile application.
I got an account (basic, maybe in 60 days freely trial… don’t know where to confirm…)
My requirement : There’re many work groups in my app. Every user in a group can start an instant meeting and others in this group can join this meeting.
After reading account-user, i think scenario 3 is appropriate for me.

Scenario 3: (Bill on your license(s))

  • If you want to use your license(s) for your users.
  • If you want to use your server to do (Zoom services related) authentication.
    Note: Regarding scenario 3, you will need to have a table in your database (or any other techniques that are equivalent) that maps each user with valid Zoom credentials.

What’s the next step for me?
I already got SDK integrated. In order to let user start instant meeting I have to choose “Login user”, right? But i don’t want them to sign up on zoom.us because they have registered in my app. So, “Email login user” - this type isn’t ok.
“SSO login” - Not sure how to get a SSO token… Is this type equals to “oauth”? What should I do to make my users get a zoom credential and login them in ?
In the above quoted part, it said “maps each user with valid Zoom credentials”, i don’t know what’s “valid Zoom credentials” and how to get it.
Thank you. I feel dizzy now…

Unless you have a managed domain, there is no way to skip the email notification to the user. Saying that, I think you could just have them join as a guest, but I am not 100% positive with the SDK. In this case, just the host would need to have a license.

@Carson_Chen is there a way to join as a guest using the SDK?

Hi Sophie,

Thanks for using Zoom SDK. Tim is correct. Based on his answer, I would like to provide more information on your use cases:

  1. If you just want the user to join a meeting, users can join a meeting as a guest without any authentication. Just simply pass a valid meeting number and a display name to the join meeting methods in the SDKs.

  2. If you would like to create an account for each user so that they can use full services offered by Zoom SDK, then you would need to combine the usage of Zoom API and Zoom SDK(Zoom SDK does not have the ability to create user). You can use this API to create a user: https://marketplace.zoom.us/docs/api-reference/zoom-api/users/usercreate, however, if you use the create type, then it has to go to the email notification part. If you have managed domain, then you can use autoCreate to create user without notifying the user. Once the user is created, you can log the user in the SDK and allow them to start/join a meeting.

    1. [Zoom API] Create a user
    2. [Zoom API] Get response with user’s info, store them in your system
    3. [Zoom SDK] Use the info to log the user in
    4. [Zoom SDK] User can start an instant meeting
  3. If you don’t want to log user in, you can consider using Zoom token and Zoom Access Token(zak) to start a meeting(https://marketplace.zoom.us/docs/sdk/native-sdks/preface/zak):

    1. [Zoom API] Schedule a meeting that starts now using the account owner’s credential
    2. [Zoom SDK] Retrieve the Zoom token and zak from Zoom API
    3. [Zoom SDK] Use the meeting number and the tokens to start the meeting.

Hope the above info helps. Thanks!

Thank both of you for giving such details to me. It’s really helpful!
Carson has put the steps across to me. I’ll consider point 2 or 3.
Now i get a new question amout ZAK here:
I saw the alive time of a zak is 2 hours. if a single zak has expired, this meeting will be cut off ?
What if many users start meetings using zak at a same time? What will happen? If it’s possible, what’s the limit, and how to charge?

About charge plan of enterprise account, I’ll contact with the sales to save your time.
Regards.

Hi Sophie,

Thanks for the reply. Regarding your question:

  1. ZAK is used to start a pre-scheduled meeting, it should be valid at the moment when starting the meeting, it will not affect how long you will be able to be in the meeting(So no cut off) :slight_smile: . Before you use the zak to start meeting again, just refresh it if it expires.
  2. You can use the same API key and secret to retrieve multiple zaks to start multiple meetings, but there is a downside for this. Since you are using the same API key and secret to retrieve the tokens, the host information will be you (API key owner). If you are able to have multiple API key and secret for each user, then this downside will be gone. For example, if you create multiple sub-accounts, then you can apply for multiple API key and secrets, and then use them differently. In this case, the charge can either go to the master account or go to the sub-account itself.

Hope this helps. Thanks!

Hi Carson,
Thanks! It’s been a few days since your reply.
Sorry to bother but i wonder if there’s any Chinese developers/ custom services in zoom team so we can talk about technical or payment issue in Chinese.

These days i was struggling with integrating APIs (get zoom token , zoom access token, and then create a meeting) into my flutter app. It’s hard because i’m not familiar with android native development, and the zoom documents also seems complicated to me.
Here’s my progress for now:
I’m trying to use API ZAK to start a meeting for not-login user as you said in previous email:

[Zoom API] Schedule a meeting that starts now using the account owner’s credential

You mean schedule a meeting using API (https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate), right?
To make this api request, I have to get a oauth access token. To get this token, i have to create an app in app marketplace and follow there instructions in this document. I stop at here for now because these works cannot be done at my mobile app but should be done at server side.
Here’re what i get in my mind to make things work:
It need a oauth_access_token for user to start a meeting, so it’s better to get the token and then record it with this user’s id once they register my application.

  1. Send a http GET request to https://zoom.us/oauth/authorize?response_type=code&client_id={YOUR_CLIENT_ID}&redirect_uri={[https://YOUR_REDIRECT_URI](https://your_redirect_uri/)}
  2. I should get a response from zoom that contains user_id(pre set in YOUR_REDIRECT_URI by myself) and code(authorization code). Then make a POST request to “https://zoom.us/oauth/token?grant_type=authorization_code&code={code}&redirect_uri={CALLBACK_URL}”. Assume that i get oauth access token from the response, i should store it with the user’s id and other information such as expire time and refresh_token in my database. When a user login to my app, i should check if his oauth access token is expired and refresh this token if it’s needed.
  3. Start a meeting in my mobile app using api with user’s oauth access token and zoom token and zoom access token, i should get a meeting number now.
    It should works as expected, i think ~

[Zoom SDK] Retrieve the Zoom token and zak(zoom access token) from Zoom API

It’s simple and has been done.

[Zoom SDK] Use the meeting number and the tokens to start the meeting

It’s been done too. I tested it using a meeting number and tokens that i got from this online api test (https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate)

Wow, let me say it’s not simple at all :crying face
I have to create three apps in “App Marketplace”. An oauth app to get client id&secret to get oauth access token for a single user; a JWT app to get API key&secret to make API request; a SDK app to get SDK key&secret to make SDK running. Emmm…

And the payment, well, i contacted with zoom sales but it turned out that they consider me as a agent or similar role? Mark offered my a ISV Partner Program which i don’t think is appropriate for my case. I think charging by meeting time is more reasonable. Do you have any advice? What if i let all users start meetings using ZAK of the account owner? Is this free or not?

Really, really sorry for my stupid questions and poor english…
Wish you a good day, and “中秋节快乐”!

Hi Sophie,

Thank you very much for your reply and the details you provided.

I am more familiar with SDK and how to build systems with Zoom SDK thus for your questions regarding Zoom API, I would provide my personal point of views regarding your questions, and I will also ask our API experts to look into your questions and provide further assistance.

//========
Regarding your questions:

  1. If you are developing a Flutter app, you don’t need to code with Android native development, if you would like to get information from our API, you can make HTTP requests in Dart. Here are some links that could be helpful:
  1. “You mean to schedule a meeting using API (https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate), right?” - Yes
  2. “I stop at here for now because these works cannot be done at my mobile app but should be done at server side” - Yes, the mechanism of OAuth requires a backend(even though there are some hacky ways to avoid it, but not recommended), it ensures your credentials and accounts are safe.
  3. The steps you mentioned are correct. Pardon the complexity of our systems/products😂because of the rich features that we offered, the possibilities of what you can do with our marketplace products are beyond infinity. We are working on smoothing/improving the user experience of understanding our products(API/SDK/etc.) and shorten the learning curve. If you have any suggestions/thoughts on how can we improve this, please let us know. Any suggestions would appreciate.
  4. For the payment plan, since I am not a sales engineer thus I will need to consult my colleagues or I will try to find someone to help you on this.

Your information and feedbacks are very important and valuable for us. All of your questions are worthy and priceless. And your English is excellent.

We are here to help you clear your doubts and concerns. We are here to bring you happiness. :slight_smile: It’s a pleasure to communicate with a developer like you.

Hope you have a wonderful day!

Hi Carson,
Really appreciate for your explanation!
API calling is not a problem after i figured out these steps. Thank you for post these links. :blush: I’m considering accomplishing the API part on server side using NodeJs so other applications (such as Electron application for desktop) can reuse it.
It’s a good day because of you kindness! Thanks!