何为openid?
openid是微信用户在公众号下的唯一用户标识,即用户唯一的“身份证”,可用于永久标记一个用户,也是微信JSAPI支付的必传参数。
微信开发文档
获取openId基本步骤:
第一步:前端获取地址栏中的code值。
第二步:通过调用接口将code传值到后台,再又后台返回对应的openId给到前端。
微信网页开发-网页授权
使用静默授权的原因:
用户在使用过程中较为无感,不需要用户手动点击授权,在原页面进行页面刷新。
前端相关代码如下:
1、获取地址栏函数
getQueryObject(url) {//可当成一个公用方法
url = url == null ? window.location.href : url;
let search = url.substring(url.lastIndexOf("?") + 1);
let obj = {};
let reg = /([^?&=]+)=([^?&=]*)/g;
search.replace(reg, function(rs, $1, $2) {
let name = decodeURIComponent($1);
let val = decodeURIComponent($2);
val = String(val);
obj[name] = val;
return rs;
});
return obj;
}
2、获取当前code值
getCode(){
let code = this.getQueryObject().code;//获取url中的code值
let appId = 'thisisanappid';//填写公众号APPID
let local = window.location.href;//当前地址
if(code == null || code == ''){//没有授权的code
window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect` //跳转授权链接
//scope=snsapi_base这句是静默授权的意思
} else{//获取到授权的code
//do something 请求后台,获取到对应的openId进行全局存储(如须全局用到的话)
}
}