捋一捋前端开发微信公众号时怎么获取code,然后将code发给后端来换取用户的openid;
1、首先你要成为所要开发的公众号的开发者,在微信公众平台--开发者工具--web开发者工具中将自己的微信号绑定为开发者;
2、然后在微信公众平台--基本配置中,启用开发者密码(AppSecret),然后将开发者ID和密码都保存好;ip白名单按照要求配置好就行;
3、在微信公众平台--公众号设置--功能设置中按照要求配置好js接口安全域名和网页授权域名,注意js接口安全域名,每个月只能改3次,配置的时候一点要注意,最好一次把开发环境、测试环境和线上环境都配置好,然后把网页授权域名配置为开发环境,方便调试;
注意这些域名配置的时候,一定要按照要求配置完成,微信需要找到他们自己的txt文件才会将回调url传到你的页面,配置不对是保存不了的,这点微信做的还是很人性的,不然3次机会太少了;
4、都配置完成之后,就需要生成网页链接了,我们的项目是公众号里面嵌套的h5页面,在公众号的自定义菜单中,将url按照固定格式拼接,填上去;
该链接分两种,一种是需要用户点击确认来获取用户基本信息的,一种是不需要点击确认,默认授权的,根据scope字段来控制即可;
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdap
ter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_bas
e&state=123#wechat_redirect
这个url格式是固定的,只需要更改appid,redirect_uri填开发环境域名(注意该链接一定要使用urlencode转换一下);
整个跳转链接生成之后,就可以配置到自定义菜单中的地址里面了;
5、微信公众号配置完成后,需要用微信开发者工具调试。打开微信开发者工具,用自己的微信登录,然后将刚才配置到自定义菜单中的链接放到开发者工具的url里面;
然后直接点击回车,就会发现url改变了,里面会有code的字段,code每次登录都会不一样,需要随时获取;
6、将url转化为json对象,然后将code取出,发给后端即可;我的前端用的angular1的框架,直接用$location.search().code正常应该能取到code,但不知道为啥一直都是空的,$location.search()一直都是空的,太玄学,只能用原生js将url转化为对象,在获取code;
代码贴上:
// 将微信返回的url获取,并转化为json对象,取到code,正常用$location.search().code即可,但是一直无法获取,更改为原生js获取code
function GetRequest() {
var url = location.search; //获取url中"?"符后的字符串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);
}
}
return theRequest;
}
console.log( GetRequest());