У меня есть официальная учетная запись WeChat, и я создал небольшое приложение для чата. Я пытаюсь отправить изображения с помощью WeChat JSSDK, но это не работает. Я следовал этому уроку: https://developers.weixin.qq.com/doc/offiaccount/en/OA_Web_Apps/JS_SDK.html#1
Мой код здесь:
<html>
<head>
<!--<script type="text/javascript" src="js/jweixin-1.4.0.js"></script>-->
<script type="text/javascript" src="js/jquery-3.4.1.js"></script>
<script type="text/javascript" src="js/jweixin-1.2.0.js"></script>
<script type="text/javascript" src="js/sha1.js"></script>
</head>
<body>
<div>Hello world!</div>
<button class="btn btn_primary" onclick="initSdk()">Init sdk</button>
<button class="btn btn_primary" id="chooseImage">Choose image</button>
<script type="text/javascript">
function initSdk() { //Only click to 'Init sdk' after document ready
var d = new Date();
var timestamp = Math.floor(d.getTime() / 1000);
var nonce = Math.random().toString(36).substr(2, 15);
var string = "param1=param1¶m2=param2&noncestr=" + nonce + "×tamp=" + timestamp;
var signature = sha1(string); //sha1 function is added to separate js file
wx.config({
debug: true,
appId: '...', //my appid
appSecret: '..', //my appsecret
timestamp: timestamp,
nonceStr: nonce,
signature: signature,
wechatToken: '...',//Getted from WeChat API by my backend, no older than 2 hours
jsApiList: [
'chooseImage',
'uploadImage'
]
});
wx.error(function (res) {
console.log('error');
});
wx.ready(function () {
console.log('ready');
});
};
document.querySelector('#chooseImage').onclick = function (res) {
debugger;
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'],
success: function (res) {
debugger;
console.log('success');
var localId = res.localIds;
console.log(localId);
//Todo: call wx.uploadImage(...) with image localId
},
fail: function (res) {
debugger;
console.log('fail');
},
complete: function (res) {
debugger;
console.log('complete');
},
cancel: function (res) {
debugger;
console.log('cancel');
},
trigger: function (res) {
debugger;
console.log('trigger');
}
});
};
</script>
</body>
Когда я нажимаю кнопку 'Init sdk', я получаю две строки в консоли браузера:
"config", {debug: true, appId: "...", appSecret: "..", timestamp: 1571442446, nonceStr: "oet50lzzo1f", …}
ready
так что все выглядит хорошо, JSSDK инициализирован, и из функции wx.ready () появляется строка «ready». Теперь я нажимаю кнопку «Выбрать изображение», и появляется следующая строка:
"chooseImage", {count: 1, sizeType: Array(2), sourceType: Array(2), success: ƒ, fail: ƒ, …}
Но нет строки 'success' и значение localId (необходимое для загрузки изображения) не появляется в консоли. Похоже, что wx.chooseImage () работает, но не работает. И здесь нет 'fail', не появляются 'complete' строки, поэтому я думаю, что ни один случай не запускается внутри chooseImage (). В чем может быть проблема? Когда я даю неверные данные конфигурации (appsecret, token и т. Д.), Я получаю строку «готово» также в консоли. Я также попробовал более новый JSSDK (jweixin-1.4.0.js), но проблема та же.
Спасибо за помощь!