先搞懂两个概念,微信sdk初始化和微信授权

微信sdk初始化
wx.config({...}),实际是有能力拿到微信提供的sdk,比如扫一扫,相册等手机的原生功能

微信授权,实际就是url+appId,重定向到微信的服务器地址,最终微信会返回url,会在url上拼上一个临时的code,用此code,可以调用后端写好的接口,可以用户用户的openid(同一个公号,同一个用户openid是一致的)

tips:
1、因为授权返回的code是临时的,所以只能用一次,如果重复使用,后端的接口会报错,大概提示此code已经被用过了。
2、因为是重定向到微信服务器地址,然后在回跳回来(带有code的回跳),所以这里实际是发生了两次reload页面,或者说至少一次reload。所以在此以前请求的api,前端的请求日志都会被清掉。这里之前在项目中就出现了获取用户的openid接口被调用了两次(临时code被用了两次),而请求network看见只请求了一次,差点还把后端坑了。

微信授权最容易出现的一个报错:
redirect_uri参数错误,或redirect_uri,10003报错,实际是未配置微信公号后台没配置访问的url域名,具体配置方法自行百度。但恶心的来了,微信公号后台配置网页授权只有两个地址,那万一项目需要配置两个以上,就无法搞了。

比如a和b 这两个域名已经占用了授权域名,但本地要访问一个c域名。可能你们自然会想到修改电脑的hosts文件啊

没问题。

你把本地的localhost 指向到了c域名,这样访问c域名依然还是会出现redirect_uri参数错误(因为公号只配置了a和b两个域名,而此时又不能修改授权)


健儿
79 声望4 粉丝

掌握好原生js。