1:阅读微信公众号开发文档是第一步,请先阅读公众号开发文档
2:网页授权页面域名的配置,例如你配置为www.123.com。那么你的回调页面也必须在这个域名之下。
3:两种不同的授权方式,静默授权(用户无感知)和弹出授权(弹窗授权页,用户必须点击同意)
3.1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
3.2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
3.3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
4:因个人开发情况不同对应的情况也有些许变化
后端处理域名授权并返回情况下:
前端处理情况下可有两种方法处理:
情况一:公众号后台配置菜单,可直接在菜单处加授权回调链接:https://open.weixin.qq.com/connect/oauth2/authorize?appid=**************&redirect_uri=*************&response_type=code&scope=snsapi_userinfo&state=123&connect_redirect=1#wechat_redirect
此时点击菜单自动回调,并将code值传入url中,再手动截取url中的code,去后端换取所需数据
情况二:公众号菜单先进入某个页面,在页面加载时再进行授权操作,此时需要需要主动调用授权回调链接,并截取url中的code,再去后端换取所需数据
截取code的方法如下:
getUrlCode(){
// 截取url中的code方法
var url = location.search;
this.winUrl = url;
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
var strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1])
}
}
return theRequest
},
获取code :getUrlCode().code