bug描述: 在公司给我bug时候,看到小程序有一个bug,就是在开发调试模式下,微信的wx.setClipboardData是可以实现的,然而退出开发调试功能之后,就会发现wx.setClipboardData不起作用了,就连fail也不走。
我解决了快4个小时,一直以为是用户隐私权限的问题,直到今天早上又换了个思路,问题才得以解决,bug原因简单的窒息。
bug原因:原来调用wx.setClipboardData的函数的地方,其实实在一个一个请求的success里面,也就是说只有上面请求成功了,才会调用这个函数。但是为什么只有在开发调试状态下为success呢?我们看一下源码
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/token',
data: {
grant_type: 'client_credential',
appid: 'xxxxxxxxxxxxx',
secret: 'xxxxxxxxxxxxxx'
},
header: {
'content-type': 'application/json'
},
success(res) {
console.log(res)
that.lianjie(res.data.access_token)//这里就是所说的调用wx.setClipboardData的函数
}
})
再看一下上面请求接口的文档https://api.weixin.qq.com/cgi-bin/token
我是这么理解的,想要调用这个接口,需要的appid,还有secret都是面向开发的,如果关闭开发调试模式,上面两个参数就不再适用了。这个接口本身就是服务端去调用的,而不在前端这里处理,是上一个程序员遗留的程序不规范引起的。就是上面我们请求的这个接口,其实就不是面向客户端的,不是前端去做的,而是服务端去做的,问题解决。