美食 健康 常识 生活 日常 合同 家居 养生 国学 心理学 中医 植物 营销 动物 汽车 管理 旅游 投资 人工智能 数字化 消费 元宇宙 金融 饮食 史学 经济
  • 会员

  • H5调起微信授权

    一、通过连接调起授权后重定向至页面

    window.location.href =
                    'https://open.weixin.qq.com/connect/oauth2/authorize?		
    				appid=wxXXXXXXXXXXXX 小程序appid 
    				&redirect_uri=http://XXX.com 重定向至当前页面
    				&response_type=code
    				&scope=snsapi_userinfo //用户手动授权
    				&state=#wechat_redirect'

    二、微信云托管登陆

    const wechatAppId = process.env.VUE_APP_WECHAT_APPID_MK;
    const wechatResourceId = process.env.VUE_APP_WECHAT_RESOURCE_ID;
    const wechatEnvId = process.env.VUE_APP_WECHAT_ENV_ID;
     
    // 微信云托管登录 换取用户信息 
    window.mplogin2.checkCloud({
        appid: wechatAppId,               // 必填,公众号appid,将以此appid名义进行请求
        resourceAppid: wechatAppId,       // 必填,如果是资源复用模式,需要填环境共享下资源方微信账号
        envid: wechatResourceId,                  // 必填,资源方微信云托管环境,如果传递此参数则会返回初始化的cloud操作对象
        signature: window.location.href,       // 选填,如果需要微信SDK的API方法,则填写要使用的地址,会返回signature签名对象,envid参数不填则无效。
        // region: ''                             // 选填,环境的地域,可选ap-guangzhou、ap-beijing,不填默认为ap-shanghai
        traceUser: false                        // 选填,默认true,是否在将用户访问记录到用户管理中,非上海地域请设置成false
    }).then(res => {
        if (res.login === true) {
            if (res.cloud != null) {
                // 挂载全局函数
                window.app = res.cloud;
                // 开始业务
                window.flag = true
                console.log('用于操作的CLOUD对象', res.cloud)
                console.log('微信用户信息', res.info)
     
                const getWechatUserInfo = function () {
                    return new Promise((resolve, reject) => {
                        let wx_userInfo, userInfo // {cloud_id, json}
                        try {
                            wx_userInfo = JSON.parse(localStorage.getItem('wx_userInfo'))
                            userInfo = JSON.parse(localStorage.getItem('userInfo'))
                        } catch (error) {
                            // 如果解析失败,证明未授权成功,需要重新授权
                        }
     
                        if (wx_userInfo && userInfo) {
                            resolve()
                        } else {
                            window.app.callContainer({
                                path: '/api/user/info',     // 填入业务自定义路径和参数,根目录,就是 / '/api/user/info', 
                                method: 'POST',                     // 按照自己的业务开发,选择对应的方法
                                header: {
                                    'X-WX-SERVICE': wechatEnvId,            // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称)
                                },
                                data: {
                                    info: window.app.CloudID(res.info)
                                }
                                // 其余参数同 wx.request
                            }).then(res => {
                                return res.data.data_list[0]
                            }).then(userInfo => {
                                // {cloud_id, json}
                                localStorage.setItem('wx_userInfo', JSON.stringify(userInfo));
     
                                let openid, nickname, headimgurl, unionid, activity_id
                                try {
                                    const json = JSON.parse(userInfo.json);
                                    const data = json.data
                                    const data2 = JSON.parse(localStorage.getItem('activity_id'))
                                    activity_id = data2
                                    openid = data.openId
                                    nickname = data.nickName
                                    unionid = data.unionId
                                    headimgurl = data.avatarUrl
                                } catch (e) {
                                    // 错误上报
                                }
     
                               
                                } else {
                                    resolve()
                                }
                            })
                        }
                    })
     
                };
     
                // 获取用户信息
                // getWechatUserInfo();
     
                // 监听签名注册成功
                wx.ready(() => {
                    getWechatUserInfo().then(() => {
                        next()
                    })
                })
     
                // 使用微信公众号SDK,开始签名,签名信息在result.signature中
                // 发起签名注册,是一个异步操作,成功会触发wx.ready
                wx.config({
                    appId: wechatAppId, // 微信公众号appid
                    timestamp: res.signature.timestamp + '',   // 时间戳,从返回result.signature中获取
                    nonceStr: res.signature.nonceStr,          // 随机字符串,从返回result.signature中获取
                    signature: res.signature.signature,        // 签名,从返回result.signature中获取
                    jsApiList: [],                // 注册的api列表
                    openTagList: ['wx-open-launch-weapp'] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']
                })
            } else {
                // 登录成功,但环境加载失败,需按照提示解决
                console.log(res.msg)
            }
        } else {
            // 没有登录,需跳转到登录页面
            // 以下方式可以适应IOS、安卓、PC平台的跳转和返回
            //   const a = document.createElement("a");
            //   a.href = './login.html' // 需要和登录页保持一致
            //   a.click()
            window.mplogin2.doLogin({
                appid: wechatAppId,                   // 必填,公众号appid,将以此appid名义进行请求
                scope: 'snsapi_userinfo',                     // 必填,登录方式:snsapi_userinfo、snsapi_base// 必填,登录方式:snsapi_userinfo、snsapi_base
                // noback: true,                              // 选填,登录完不直接返回业务页面,执行自定义附加操作
                // redirect: window.location.href             // 跳转的页面,默认是当前页面,如果你有自定义登录成功页,可以联动设置 
            }).then(res => {
                // noback为true时,将不会返回业务页面,执行到这里
                // 此时需要自行控制跳转回业务页面
                console.log(res)
                next();
            })
        }
    })
    H5调起微信授权
    微信扫码分享

    0

    0

    分享
  • 会员

  • 上一篇: HTTP权威指南PDF版

    下一篇: wx-open-launch-weapp开放标签的使用

    还没有评论,赶紧来抢沙发吧!

    酸辣鱼唇 酸辣鱼唇汤

    1、材料:鱼唇适量、料酒10克、味精5克、鸡油75克、醋20克、盐3克、胡椒粉8克、淀粉(玉米)25克、大葱50克、姜2 …

    三明治的做法有哪些 三明治的做法有哪些好吃

    1、做法一 材料:吐司2片,苹果、蕃茄、素火腿分别切成2薄片,奶酪片2片,绿色蔬菜叶烫过,芋泥少许。 吐司对切成三角形, …

    永远不要在别人面前,随便说出这5句话

    “病从口入,祸从口出。” 有些不该说的话,即便出于无心,也很容易伤人于无形。 尤其下面这5句话,永远不要轻易对别人说。 …

    健康饮食科普小知识

    一般人群膳食适用于6岁以上人群。首先食物多样,谷类为主,粗细搭配;多吃蔬菜水果和薯类;每天吃奶类、大豆或其制品;常吃适量 …

    马铃薯湿粉条怎么吃 马铃薯湿粉条怎么做

    1、材料:土豆淀粉140g、温水35g、开水75g、盐一小撮约0.5g。 2、先配料打芡:先取20g的土豆淀粉放入碗中, …

    泡鱼胶的水可以吃吗(鱼胶可以直接泡水吗)

    鱼胶是一种较为名贵的滋补食材,很多人喜欢用来炖汤喝,但鱼胶在炖煮之前,都需要进行泡发,那么泡鱼胶的水可以吃吗? 泡鱼胶的 …

    空调房里能放加湿器吗(空调房里面需要放加湿器吗)

    空调房里加湿器放哪里 建议将加湿器放置在1米左右高的地方,这样能让湿气更好地流通,把加湿器放在1米左右高的桌子上或是椅子 …

    天安城门的屋顶采用什么,是什么时期修建的

    天安门城楼简称天安门,位于北京市东城区长安街、故宫的南端,于1961年列入第一批全国重点文物保护单位,天安门城楼巍峨矗立 …

    无菌蛋生吃吃法(无菌生食蛋)

    1、无菌蛋是经过巴士杀菌法来进行过消毒的鸡蛋,从一开始就受到严格的控制和处理,因此所含有的有害细菌很少,是能够生吃的。 …

    为什么大多数动物都是雄性追求雌性?

    或许你看过《动物世界》,看到过羚羊“角斗”,也看到过狮子争夺地盘,但造成这样的原因大多都是——雄性之间竞争出繁衍的机会, …

    面善心黑的伪君子有这三类特征,最好远离!

    古语有云:“路遥知马力,日久见人心。” 遥远的路途能够检验一匹马的优劣,一个人经过时间的考验,才能知道他是不是真心。 为 …

    吃猪肉的知识最新

    猪肉是我们日常生活中不可或缺的一部分,猪肉,又名豚肉,是猪科动物家猪的肉。其性味甘咸平,含有丰富的蛋白质及脂肪、碳水化合 …

    家里的碗柜生霉怎么办

    碗柜生霉的处理方法 碗柜里面出现霉斑通常会比较难清理,需要用除霉剂仔细清理碗柜内的各个角落,将所有霉斑清洗干净,避免残留 …

    椒盐五花肉的做法 椒盐五花肉的做法视频教程

    1、主料:猪肋条肉(五花肉)600克。 2、调料:花椒15克、青蒜15克、盐3克、江米酒5克。 3、五花肉以肉夹拔除剩余 …

    一个中年女人最大的悲哀,不是没钱,而是在这3件蠢事上斤斤计较

    有人说,贫穷是一种悲哀。 但对于中年女人而言,真正的悲哀却往往不在于物质的匮乏,而是在于心灵的狭隘。 那些过分在意、无法 …

    夫妻关系变坏,大多是从以下5件事开始的,别不当回事!

    爱情是美好的,婚姻是现实的,每个人都希望自己能和自己爱的人长相厮守,白头偕老。 但在现实生活中,有很多夫妻在一起时间长了 …

    100克鸡胸肉的热量是多少(100克鸡胸肉的热量是多少千焦)

    鸡胸肉可以说是鸡身上营养很丰富的一部分,虽然它的肉质口感没有鸡腿那么好,但是因为没有皮,所以经常被用来当成做沙拉的食材, …

    泡芙做出来可以放冰箱吗(泡芙做好可以放冰箱吗)

    泡芙外观精巧可爱,味道甜甜的,奶油味香浓,是现在年轻人很喜欢的的一种甜点。刚出炉的热乎乎的泡芙是最好吃的。泡芙可以放冰箱 …

    男人越是爱一个女人,就越会这样“折腾”她

    在爱情中,男人和女人的表现往往存在差异。 男人可能会因为心疼、关心、不安甚至是希望得到更好的陪伴而表现出一些“折腾”女人 …

    高端进口壁纸好吗

    现代装饰行业中,高端进口壁纸是非常受大家欢迎的,所以大家在选购进口壁纸的时候一定更要引起重视,一定要选择质高价优的壁纸产 …