+1
微信OCR识别 wx.serviceMarket.invokeService 返回data为空对象?[图片]
2023-05-13我在企业微信自建应用的构造网页授权链接遇到了同样的问题
location.replace('.../oauth2/authorize?...') 没替换历史https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 微信浏览器中,前端js跳转授权无法替换历史 信息: iphone8plus,微信7.0.15 // 前端使用 location.replace(`https://open.weixin.qq.com/connect/oauth2/authorize?appid=...`) // 跳转授权时,没有替换历史,其结果等同于 location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=...` // 但是其它url却是正常替换历史的 /** * 微信授权 code * @param {object} options {redirect_uri?, scope?, state?} */ function authorize(options = {}) { options.redirect_uri = options.redirect_uri || location.href var url = ` https://open.weixin.qq.com/connect/oauth2/authorize ?appid=${authorize.appid} &redirect_uri=${encodeURIComponent(options.redirect_uri)} &scope=${options.scope || 'snsapi_userinfo' || 'snsapi_base'} &state=${options.state || 'STATE'} &response_type=code #wechat_redirect `.replace(/\s/g, '') // weixin webview // location.replace 没有去掉历史 if ( navigator.userAgent.match(/MicroMessenger/i) && !navigator.userAgent.match(/wechatdevtools/i) ) { // 【hack】 去掉一个历史 只适合前端路由 // 【但是】第一个页面就需要授权的话,就无法去掉了 history.back() setTimeout(() => { location.href = url }, 0) } else { // 在微信浏览器中,此行没有替换历史,而是直接新增了一个历史,导致两个相同的历史页,需要返回两次 // 也是在微信浏览器中等同于 location.href = url // 并且只是 https://open.weixin.qq.com/connect/oauth2/authorize 这个url才会这样 location.replace(url) } } authorize.appid = 'config rewrite' /* // login if(!param('code')){ authorize() } // ajax code => openid */
2021-02-01不需要另外引入wx jssdk,因为企业微信的webview已经注入了windon.wx对象,再引入jssdk后,因为引入的jssdk本身没有wx.agentConfig方法,从而导致wx.agentConfig报undefined
企业微信wx.agentConfig 报undefined?在调用了wx.config,并且是在ready方法里面调用wx.agentConfig方法,但是报undefined,也在线引入了js文件 [图片] [图片]
2020-10-12我也遇到这个问题了,官方不出来回答一下吗?
企业微信 location.replace 跳转之后history没有被替换?企业微信h5 进入页面后会先判断是否已授权,url授权地址 使用 location.replace(url) 跳转之后history没有被替换? 与 location.href = url 效果一样
2020-09-25同问,需要在canvas 2d 场景下使用
如何将ArrayBuffer 转换成 Uint8ClampedArray?- 需求的场景描述(希望解决的问题) 将云API生成的小程序二维码 arraybuffer 变成Uint8ClampedArray ,然后通过画布保存下来。 [代码]const data = [代码][代码]new[代码] [代码]Uint8ClampedArray([代码][代码]this[代码][代码].data.imageByteArray);[代码][代码] [代码][代码]wx.canvasPutImageData({[代码][代码] [代码][代码]canvasId: [代码][代码]'firstCanvas'[代码][代码],[代码][代码] [代码][代码]x: 0,[代码][代码] [代码][代码]y: 0,[代码][代码] [代码][代码]width: 308,[代码][代码] [代码][代码]height:308,[代码][代码] [代码][代码]data: data,[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]wx.canvasToTempFilePath({[代码][代码] [代码][代码]x: 0,[代码][代码] [代码][代码]y: 0,[代码][代码] [代码][代码]width: 308,[代码][代码] [代码][代码]height: 308,[代码][代码] [代码][代码]destWidth: 308,[代码][代码] [代码][代码]destHeight: 308,[代码][代码] [代码][代码]canvasId: [代码][代码]'firstCanvas'[代码][代码],[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]console.log(res.tempFilePath)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail(e){[代码][代码] [代码][代码]console.error(e);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码]- 希望提供的能力
2020-04-13