开发者在执行初始化的时候,需要传入 auth_payload。 该数据结构由开发者服务端生成并传回浏览器,用于开发者授权此浏览器运行的 JMessage 初始化。开发者需确保能调用获取到此数据的皆为合法用户。
auth_payload的数据结构如下:
{
"appkey": "7e42e869baa2fbca8ccb823c",
"random_str": "022cd9fd995849b58b3ef0e943421ed9",
"signature": "E422A978DE37196588531CD0C42010B5",
"timestamp": "1467967210887"
}
参数说明:
签名生成算法如下:
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