줌-sdk-electron에서 할 수 있는 일을 조사할 때까지의 그것(Qita에서 전재)

개요


줌이 제공하는 일렉트로닉의 API가 할 수 있을 것 같은 일은 참고하면 이해하기 어려울 것 같아서 시연 앱을 시작하려고 했는데 의외로 반한 부분이 많았어요. 그거에 대해서.

참고 자료


Zoom Electron SDK 시작
매우 이해하기 쉽지만 구체적인 코드 변경 내용에 대한 설명이 없어 덧붙이려고 합니다.당시의 판본과 조금 다르기 때문에 줄 수의 부분에 편차가 있을 수 있습니다...
기사만 읽으면 이 사람은 차라리 내가 쓴 것처럼 SDK Key/Secret의 인증은 기본...https://github.com/zoom/zoom-sdk-electron/commit/dbdff5a65dff40c1bccb7a1b269391ea72d8f6b5#diff-3b4cc93c41d4067694a6d9ff6ae923efL643 이 약속은 대규모 수정이 있었다.)

일단 필요한 것들 준비.


※ 전제는 맥 버전에서 실시
  • https://github.com/zoom/zoom-sdk-electron
  • 이 페이지에서 필요한 사항을 확인하세요.
  • 소스 코드(Git로 clone)
  • A device with Mac OS or Windows OS
  • Mac OS: MacOS 10.10 or later.
  • node.js12.0version
  • nvm
  • 미리 준비
  • zoom의 계정(그리고 Market place의 API 키, 토큰 등의 생성)
  • 그 다음
  • 기본 준비 - 구축


    node 12.0.0 (이터레이션이 필요하지 않을 수 있음)
    $ nvm install 12.0.0
    $ node -v
    v12.0.0
    
    소스 코드
    $ git clone https://github.com/zoom/zoom-sdk-electron
    
    필요한 것을 순서대로 넣고 구축
    $ npm install --save-dev [email protected] -g
    $ npm install node-gyp -g
    $ npm install bindings -g
    
    $ cd zoom-sdk-electron
    $ sh build_nodeaddon_mac.sh
    
    주변 환경에 Warning이 많이 생겼다.
    gyp info ok
    cp: ../../../../../../Bin/Mac/Release: No such file or directory
    cp: ./build/Release/zoomsdk.node.dSYM: unable to copy extended attributes to ../../../../../../Bin/Mac/Release: No such file or directory
    cp: ../../../../../../Bin/Mac/Release/Contents: No such file or directory
    cp: ./build/Release/zoomsdk.node.dSYM/Contents: unable to copy extended attributes to ../../../../../../Bin/Mac/Release/Contents: No such file or directory
    cp: ../../../../../../Bin/Mac/Release/Contents/Resources: No such file or directory
    cp: ./build/Release/zoomsdk.node.dSYM/Contents/Resources: unable to copy extended attributes to ../../../../../../Bin/Mac/Release/Contents/Resources: No such file or directory
    cp: ../../../../../../Bin/Mac/Release/Contents/Resources/DWARF: No such file or directory
    cp: ./build/Release/zoomsdk.node.dSYM/Contents/Resources/DWARF: unable to copy extended attributes to ../../../../../../Bin/Mac/Release/Contents/Resources/DWARF: No such file or directory
    cp: ../../../../../../Bin/Mac/Release/Contents/Resources/DWARF/zoomsdk.node: No such file or directory
    cp: ../../../../../../Bin/Mac/Release/Contents/Info.plist: No such file or directory
    
    결과는 실패로 보이지만 문제가 없을 것 같아 앞으로 돌진해야 한다.
    프레젠테이션 시작
    $ sh run_demo_mac.sh
    run_demo_mac.sh: line 12: cd: ./demo: No such file or directory
    
    이것도 틀린 거야?!내 생각에는 이렇다.이후 다양한 것들이 생겨난다.
    image.png
    순조롭게 작동했어...그러나...
    objc[43150]: Class ZoomLauncher3rdSdkIPCReciever is implemented in both /Users/tetsunosuke/work/zoom/electron/zoom-sdk-electron/demo/node_modules/electron/dist/Electron.app/Contents/Frameworks/ZoomSDKChatUI.framework/Versions/A/ZoomSDKChatUI (0x10d2e6b30) and /Users/tetsunosuke/work/zoom/electron/zoom-sdk-electron/demo/node_modules/electron/dist/Electron.app/Contents/Frameworks/zChatApp.bundle/Contents/MacOS/zChatApp (0x115173560). One of the two will be used. Which one is undefined.
    InitSDK 0
    Error: Send error, 60 Operation timed out
    Error: Send error, 60 Operation timed out
    Error: Send error, 60 Operation timed out
    
    에 무슨 오류가 생겼어요.신경 안 써도 동작을 하고 있으니까 잠시 무시해.

    그리고요?


    이렇게 스타트 데모를 누르면...
    image.png
    위에서 말한 바와 같이 요구jwt token하지만 jwt token의 유효기간을 고려하여 먼저 시험SDK Key/SDK Secret하는 것이 좋다고 생각합니다.
    앞으로 그 전제에서 착수하자.참고 기사Zoom Electron SDK 入門와 비교하면 이곳은 조금 다르다.

    착수하다


    그 전에 Key/Secret을 SDK로 발행


    https://marketplace.zoom.us/ 서명
    Develop→Build App을 선택합니다.Choose your app type에서 SDK를 선택하십시오.
    다양한 정보를 입력해 앱을 만들면
    image.png
    SDK 키, SDK 시크릿을 지불해야 하므로 제어해야 합니다.

    응용 프로그램의 시작을 간소화하다.


    이쪽도 참고 기사와 마찬가지로 내부 절차를 미리 파악하면
  • main.js: createWindow() -> showDomainWindow() -> pages/domain.> 열기
  • dmain.게임 이름:doinit()->senddomanings()->asynchronous-message의'setDomain', 화면에서 선택한domain,enable로그를 메인 프로세스로 보내기
  • main:js는 asynchronous-message를 수신하고 호출functionObj[arg1](arg2, arg3, arg4, arg5);
  • 버튼 누르기
     function createWindow() {
       // Create the browser window.
    -  showDomainwindow();
    +  // showDomainwindow();
    +  functionObj["setDomain"](
    +      "https://www.zoom.us", /* domain */
    +      true                    /* enable_log */
    +  );
     }
    
    는 상술한 것과 같다고 할 수 있다.
    ※ 그런데 이 도마인은 도대체 뭔가요?
    또한 jwt token을 요청하는 화면이 호출됩니다pages/index.html.
    ProceSDKReady()를 부를 때 showAuthWindow()라고 부르기 때문이다.
    여기서부터 처리할게요.
  • index.> 버튼을 클릭하여 dosdkauth With JwtToken을 호출하고 asynchronous-message로 호출
  • 그래서 단숨에 이곳을 뛰어넘었다.
    이번 인증은 SDK의 Key/Secret이므로 zoomauth.AuthWithJwtToken(sdk_context);로 대체zoomauth.SDKAuth(key, secret);합니다.

    이렇게 새로운 함수의main.js에 설치
    
    +  sdkLogin: function(key, secret) {
    +    let ret = zoomauth.SDKAuth(key, secret);
    +    if (ret == 0) {
    +      showWaitingWindow();
    +    }
       } 
    
    이렇게 쓰면 sdkLogiin이 호칭되고 답장(sdkauthCB)이 나중에 움직인다.
    언어를 일본어로 처리(ZoomSDK LANGAGE ID.LANGAGE English→ZoomSDK LANGAGE ID.LANGAGE Japanese)하면 다음과 같은 차이가 있다.
    main.js
     function ProcSDKReady() {
    -  showAuthwindow()
       var options = {
         authcb: sdkauthCB,
         logincb: loginretCB,
         logoutcb: null
       }
       zoomauth = zoomsdk.GetAuth(options);
    +  functionObj["sdkLogin"](
    +      "ここに取得していた SDK Keyを",  /* key */
    +      "ここに取得していた SDK Secretを"   /* secret */
    +  );
     }
    
    image.png
    이로써 zoom 클라이언트의 주요 실현은 이미 완성되었습니다!

    나중에 프레젠테이션의 용도를 즐겨보세요.


    image.png
    image.png
    GiitHub에서 공동 테스트 시작

    좋은 웹페이지 즐겨찾기