在公众号开发中,微信登录功能需要获取用户的openid,需要先获取code,在获取用户openid
一获取code
微信文档连接
网页授权 | 微信开放文档
code路径
https://open.weixin.qq.com/connect/oauth2/authorize?
注意 参数scope有两种 snsapi_base只获取用户openid ,snsapi_userinfo 为弹出授权框,需要授权,可以拿到所在地,头像等等具体信息。 code会以路径参数方式传递给当前访问的路径
二。拿到code之后会获取openid,
const actions = {
loginInit(){
var local = window.location.href;//当前路径,注意:路径必须是在公众号配置过的
var APPID = '';//此为公众号的openId
var code = getUrlParam('code')//工具函数,获取code参数信息
if(code == "" || code == undefined || code == null){
window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + APPID + '&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect'
}else{
//获取到的话,通过后台接口获取到openId,此接口必须放在后台,不然微信返回异常,
return new Promise((resolve, reject)=>{
getToken({code:code}).then(res=>{
//参数返回
resolve(res)
})
})
}
},
}
//url获取参数的方法
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}