注入依赖后,安卓手机无法使用 wx.scanQRCode 唤起扫码,怎么解决?

2023/11/23
提问

注入依赖后,安卓手机无法使用 wx.scanQRCode 唤起扫码,怎么解决?

注入依赖方式:

<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
<script src="https://wwcdn.weixin.qq.com/node/open/js/wecom-jssdk-1.3.1.js"></script>


// 使用权限注入依赖
obj :服务端返回
const wxAuthentication = (obj) => {
	wx.agentConfig({
		beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
		debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
		corpid: obj.appId, // 必填,企业微信的corpID  必填,企业微信的corpid,必须与当前登录的企业一致
		agentid: obj.agentId,
		timestamp: obj.timestamp, // 必填,生成签名的时间戳
		nonceStr: obj.noncestr, // 必填,生成签名的随机串
		signature: obj.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
		jsApiList: ['checkJsApi', 'chooseImage', 'openEnterpriseChat',
			'previewFile', 'scanQRCode', 'uploadImage', 'getLocalImgData'
		] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
	});
	wx.error(function(res) {
		console.log('config信息验证失败会执行error函数', res)
		// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
	});
	wx.success(function(res) {
		console.log('config信息验证成功会执行success函数', res)
		// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
	});
}


苹果手机可以唤起扫码,安卓手机点击一直无效,也没有报错


使用扫码代码片段:

// 扫码功能
const weComscanCode = () => {
	return new Promise((resolve, reject) => {
		console.log("res  扫码=")
		wx.scanQRCode({
			desc: 'scanQRCode desc',
			needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
			scanType: ["qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
			success: function(res) {
				// 回调
				console.log("res-res-", res);
				var result = res.resultStr; //当needResult为1时返回处理结果
				resolve(result)
			},
			error: function(res) {
				console.log('error==', res);
				if (res.errMsg.indexOf('function_not_exist') > 0) {
					alert('版本过低请升级')
				}
			}
		});
	})
}




回答·2

您好,试下在线引入js文件看看呢。 http://res.wx.qq.com/open/js/jweixin-1.2.0.js

赞同
评论 14
2023/11/28
已经引入插件如下图,
并且已经在vConsole 中打印出企业微信的api 如下图
但是调用扫码,一直失败,代码如下图
赞同
回复
2023/11/28
http://open.work.weixin.qq.com/api/jsapidemo  官方这个demo 代码可以提供吗?
赞同
回复
回复 2023/11/28
加上http或https试试看呢
赞同
回复
2023/11/28
用 ww.register({
beta: true, 
debug: true, 
corpId: obj.appId,
agentId: obj.agentId,
timestamp: obj.timestamp,
}) 注册的
现在报错:errMsg: "agentConfig:invalid signature more info at https://open.work.weixin.qq.com/devtool/query?e=40093"
后台签名也出现如下链接情况:https://developer.work.weixin.qq.com/community/question/detail?content_id=16529712484238378366
签名一直失败
赞同
回复
回复 2023/11/28
出现和这个链接一样的签名失败情况 https://developer.work.weixin.qq.com/community/question/detail?content_id=16529712484238378366
赞同
回复
回复 2023/11/28
你好,首先可以用http://work.weixin.qq.com/api/jsapisign页面工具进行校验签名算法,如与工具一致那么说明算法没有问题

可以核查参与签名的相关参数情况  

常见有俩点原因
1.url 为当前需要调用域名的url 可以动态获取当前url除了#之后的 都需要参与签名
2.就是ticket情况是有时效 需要当前企业进行获取保证有效的
赞同
回复
回复 2023/11/28
java 后台签名和官网http://work.weixin.qq.com/api/jsapisign 签名结果一致。但是在手机端调用  ww.scanQRCode({})  window.ww.scanQRCode({})   wx.scanQRCode({})  均报错:   "agentConfig:invalid signature more info at https://open.work.weixin.qq.com/devtool/query?e=40093"
赞同
回复
回复 2023/11/28
检查下url这些看看呢,需要为当前url
1.url 为当前需要调用域名的url 可以动态获取当前url除了#之后的 都需要参与签名
2.就是ticket情况是有时效 需要当前企业进行获取保证有效的
赞同
回复
2023/11/28
https://nbpj.xxxxx.cn/cffgh5/?code=dvlir8j_n1TeF1FaCwZSC7QTMlNdNThg4LFISSwIvQa&state=9#/packageTask/taskDe?id=1&type=reopen
这样的url 进行签名,重定向回来后,继续签名使用
赞同
回复
回复 2023/11/28
wx.agentConfig 会出现这样的情况,排查不到问题所在
赞同
回复
回复 2023/11/28
可以提供对应的操作时间、企业corpid、signature确认下
赞同
回复
回复 2023/11/28
没理解你意思,我需要怎么操作
赞同
回复
回复 2023/11/29
使用ww.register的话,需要调用getAgentConfigSignature进行签名
https://developer.work.weixin.qq.com/document/path/98705
赞同
回复
回复 2023/11/29
请提供签名的相关参数、调用时间点这些
赞同
回复
你还未登录,请先登录
2023/11/23

会不会是权限问题,导致的,

赞同
评论 6
2023/11/23
拿了3台安卓手机测试都不行,所有权限都允许的,没屏蔽任何权限
赞同
回复
2023/11/23
第一次打开时,应该需要弹框,需要用户授权,才能使用相机扫描的。我打开相机拍照是这样的,需要隐私协议里添加申请,你这个感觉也需要。
赞同
回复
2023/11/23
”隐私协议里添加申请“ 这个在哪儿操作的呢? 方便加一个v:
TrohZl,指点一下么? 
赞同
回复
2023/11/23
安卓手机,扫码、fail 里面 出现这段报错信息
fail==
Object {errCode: -1, errMsg: "agentConfig:e...
errCode: -1
errMsg: "agentConfig:exception"
err_msg: "agentConfig:fail_exception"
__proto__: Object
赞同
回复
回复 2023/11/23
用户隐私保护指引里,可以完善和更新,进去可以添加权限;这个只是可能的一种原因,你试一下吧
赞同
回复
回复 2023/11/23
谢谢你的回复,目前还在找解决方法
赞同
回复
你还未登录,请先登录
添加回答


您还未登录,请先登录