小程序--(极光)推送

鉴权

开发者在执行初始化的时候,需要传入 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}×tamp={timestamp}&random_str={random_str}&key={secret})

其中 secret 为开发者在极光平台注册的 IM 应用 masterSecret。 签名生成示例:

signature = md5("appkey=25b693b31d2c2ad5f072ef0c×tamp=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×tamp=" + 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,
  }
})

微信小程序生成字符串随机数 ,长度的话可以自定义 

最近在集成极光要求 random_str : 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

 

 

 

你可能感兴趣的:(小程序,极光推送)