首先,当我们一进入h5项目的时候,就会调用onLunch这个函数,接着需要去走授权这个操作。授权的具体部分如下
获取通过微信重定向获取code代码
//获取地址后面的参数
function getPrams() {
const url=window.location.search
let item=Object.fromEntries(new URLSearchParams(url.replace('/','')))
return item
}
function getInit(){
const prams=getPrams()
const code=prams.code;//code
const mchNo = prams.mchNo;//商户号
if (mchNo == null || mchNo == '') {
mchNo = '商户号';//商户号自己定义
}
//通过商务号(每个项目会定义好)获取:openAppId,channel(渠道)
let data=getMchNo()
const openAppId=data.openAppId;//公众号ip
const channel=data.openAppId;//渠道
uni.setStorageSync('mchNo:', mchNo);//商户号
uni.setStorageSync('channel',channel );//unionId
//通过微信重定向获取code(5分钟过期,并且不可以重复使用)
if(code == null || code == ''|| code == undefiend) {
let url =
`${window.location.protocol}//${window.location.host}${window.location.pathname}` +
'?mchNo=' + mchNo
const redirectUri = encodeURIComponent(url)
window.location.href =
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${initRes.data.openAppId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_userinfo&#wechat_redirect`
return;
}else {
//有code需要向后台发送请求获取unionId:'',openId 假设获取的数据为resss
let resss={
unionId:'',
openId:'',
}
uni.setStorageSync('openId',resss.openId );//openId
uni.setStorageSync('unionId',resss.unionId );//unionId
}
//如果上面的数据都拿到了 将进行自动登录 unionId openAppId;//公众号ip 调取接口 将获取sessionId
if(sessionId){
uni.setStorageSync('sessionId',sessionId);//存储用户的sessionId
//在通过接口sessionId 获取userInfo的基本信息
}else {
//没有需要去登录页面
uni.navigateTo({
url: '/pages/login/login?mchNo=' + mchNo
})
}
}
//通过商务号去获取信息
function getMchNo(mchNo){
//这个需要向后台发送请求
xxx
//将结果放回 res={openAppId:'',channel:'',}等数据
return res
}