애플 릿 -- (극광) 푸 시

감 권
개발 자가 초기 화 를 실행 할 때 auth 로 전송 해 야 합 니 다.payload。 이 데이터 구 조 는 개발 자 서버 에서 브 라 우 저 를 생 성하 고 전송 합 니 다. 개발 자가 이 브 라 우 저가 실행 중인 JMessage 를 초기 화 할 수 있 도록 권한 을 부여 합 니 다.개발 자 는 이 데 이 터 를 가 져 올 수 있 는 모든 사용자 가 합 법 적 인 사용자 인지 확인 해 야 합 니 다.
auth_payload 의 데이터 구 조 는 다음 과 같다.
{
    "appkey": "7e42e869baa2fbca8ccb823c",
    "random_str": "022cd9fd995849b58b3ef0e943421ed9",
    "signature": "E422A978DE37196588531CD0C42010B5",
    "timestamp": "1467967210887"
}

매개 변수 설명:
  • appkey: 개발 자가 극광 플랫폼 에 등 록 된 IM 응용 appkey
  • random_str: 20 - 36 길이 의 무 작위 문자열 로 서명 에 salt 를 사용 합 니 다
  • timestamp: 현재 시간 스탬프, 재생 공격 방지 에 사용, 밀리초 까지 정확
  • signature: 서명, 10 분 후에 효력 을 상실 합 니 다 (초기 화 작업 만 대상 으로 하고 초기 화 에 성공 하면 다음 작업 은 서명 과 무관 합 니 다)
  • 서명 생 성 알고리즘 은 다음 과 같 습 니 다.
    signature = md5(appkey={appkey}&timestamp={timestamp}&random_str={random_str}&key={secret})
    

    이 중 시 크 릿 은 개발 자가 극광 플랫폼 에 등록 한 IM 애플 리 케 이 션 masterSecret 입 니 다.서명 생 성 예시:
    signature = md5("appkey=25b693b31d2c2ad5f072ef0c&timestamp=1507791639926&random_str=022cd9fd995849b&key=bc2efab258f2019727a4f36l")
    

    * 생산 환경 서명 생 성 은 개발 자 서버 에서 생 성 되 어야 합 니 다. 그렇지 않 으 면 masterSecret 노출 위험 이 있 습 니 다.
    극광 푸 시:JMessage MiniProgram SDK 통합 안내서
    miniProgram Sdk_:https://www.jiguang.cn/im
    require('./common/runtime.js')
    require('./common/vendor.js')
    require('./common/main.js')
    var md5 = require("./common/md5.js")
    var JMessage = require("./common/jmessage-wxapplet-sdk-1.4.0.min.js")
    //app.js
    
    App({
      onLaunch: function () {
        //  API          
        var jim = new JMessage({});
        this.globalData.jim = jim;
        
       
      },
      onShow:function(){
        //       JMessage
        this.initJG();
     
        
      },
      onHide: function (){
        //      JMessage
        this.globalData.jim.loginOut();
      },
      createNonceStr: function () {
        var str = "",
          range = 20, //min
          arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
            'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
            'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
          ];
    
        //     
        if (true) {
          range = Math.round(Math.random() * (36 - 20)) + 20;
        }
        for (var i = 0; i < range; i++) {
          var pos = Math.round(Math.random() * (arr.length - 1));
          str += arr[pos];
        }
        return str;
      },
       //   JMessage   
      initJG(){
        var random_str = this.createNonceStr();
        var myDate = new Date().getTime();
        var signature = md5("appkey=xxxxxxxxxx&timestamp=" + myDate + "&random_str=" + random_str +      "&key=xxxxxxxxxx");    
        this.globalData.jim.init({
          "appkey": "xxxxxxxxxx",      
          "random_str": random_str,
          "signature": signature,
          "timestamp": myDate,
          //             100     
          "flag": 1,
        }).onSuccess(function (data) {
          //TODO
          console.log("initonSuccessdata", data);
    
        }).onFail(function (data) {
          //TODO
          console.log("initonFaildata", data);
        });
    
      },
      globalData: {
        jim: null,
      }
    })
    
    

    위 챗 애플 릿 에서 문자열 의 무 작위 수 를 만 듭 니 다. 길 이 는 사용자 정의 할 수 있 습 니 다. 
    최근 에 집성 극광 요구 randomstr: 20 - 36 길이 의 무 작위 문자열 로 서명 에 salt 를 사용 합 니 다.
    그래서 방법 을 하나 썼어 요.
    다음은 코드.
      //     
      createNonceStr: function () {
        var str = "",
          range = 20,//min
          arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
     
        //     
        if (true) {
          range = Math.round(Math.random() * (36 - 20)) + 20;
        }
        for (var i = 0; i < range; i++) {
          var pos = Math.round(Math.random() * (arr.length - 1));
          str += arr[pos];
        }
        return str;
      }

    인쇄 하 다.
       var num=this.createNonceStr();
        console.log(num);

    출력:
    HO27DqJty6h74eA6gfWH6jTF

     
     

    좋은 웹페이지 즐겨찾기