JavaScript-пакет WeChat JS wx.chooseImage (), wx.uploadImage () не работает

WeChat JS SDK wx.chooseImage (), wx.uploadImage () не работает

У меня есть официальная учетная запись WeChat, и я создал небольшое приложение чата. Я пытаюсь отправить изображения с помощью WeChat JSSDK, но это не работает. Я следовал этому руководству: https://developers.weixin.qq.com/doc/offiaccount/en/OA_Web_Apps/JS_SDK.html#1

Мой код здесь:

 {amp}lt;html{amp}gt; {amp}lt;head{amp}gt; {amp}lt;!--{amp}lt;script type="text/javascript" src="js/jweixin-1.4.0.js"{amp}gt;{amp}lt;/script{amp}gt;--{amp}gt; {amp}lt;script type="text/javascript" src="js/jquery-3.4.1.js"{amp}gt;{amp}lt;/script{amp}gt; {amp}lt;script type="text/javascript" src="js/jweixin-1.2.0.js"{amp}gt;{amp}lt;/script{amp}gt; {amp}lt;script type="text/javascript" src="js/sha1.js"{amp}gt;{amp}lt;/script{amp}gt; {amp}lt;/head{amp}gt; {amp}lt;body{amp}gt; {amp}lt;div{amp}gt;Hello world!{amp}lt;/div{amp}gt; {amp}lt;button class="btn btn_primary" onclick="initSdk()"{amp}gt;Init sdk{amp}lt;/button{amp}gt; {amp}lt;button class="btn btn_primary" id="chooseImage"{amp}gt;Choose image{amp}lt;/button{amp}gt; {amp}lt;script type="text/javascript"{amp}gt; 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{amp}amp;param2=param2{amp}amp;noncestr="   nonce   "{amp}amp;timestamp="   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'); } }); }; {amp}lt;/script{amp}gt; {amp}lt;/body{amp}gt; 

Когда я нажимаю кнопку «Init sdk», я получаю две строки в консоли браузера:

 "config", {debug: true, appId: "...", appSecret: "..", timestamp: 1571442446, nonceStr: "oet50lzzo1f", …} ready 

так что все выглядит хорошо, JSSDK инициализирован, и строка «ready» появляется из функции wx.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), но проблема та же.

Спасибо за помощь!

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector