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

  • 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();
            })
        }
    })
  • 会员

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

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

    发表回复

    板栗鸡腿丁怎么做 板栗鸡腿丁怎么做最好吃

    1、板栗买的去皮的板栗米,对半切后水煮20分钟至熟。 2、锅内加油放入姜片。 3、加入花椒,干辣椒段呛香。 4、加入鸡腿 …

    感染新冠会变白肺?国家卫健委:白肺与原始毒株和疫苗接种没有关系

    从近期的公众反映情况看,有的新冠病毒感染者在就诊过程中发现了肺炎或者是CT出现了白肺的现象,有网友认为,出现这种情况可能 …

    红枣和枸杞一起泡水喝有什么作用(红枣和枸杞一起泡水喝上火吗)

    红枣和枸杞都是生活中比较常见的滋补中药材,这两种中药材还能作为食材使用,尤其是泡茶很是方便,那么这红枣和枸杞一起泡水喝有 …

    泡凤爪的制作方法(泡凤爪的制作方法家常)

    1、食材:鸡爪500克、姜片5克、花椒5克、八角2块、食盐2勺、白糖2勺、白醋2勺、泡椒1瓶。 2、将鸡爪洗净。剪去指甲 …

    蛇果皮硬是为什么 蛇皮果肉是软还是硬的

    今天去市场上买了一些蛇果,但是发现这些蛇果的皮都比较厚,因此不知道到底还要不要买,那么蛇果皮硬是为什么?蛇果的皮可以吃吗 …

    野山参须的功效与作用

    一、排毒,人参必须含有大量的氨基酸和维生素,可以帮助人体的新陈代谢,也有安神的作用,可以消除疲劳,有助于睡眠。 第二,增 …

    c盘报满怎么解决 c盘无缘无故满了怎么办

    1、打开计算机,找到你的C盘,在你的C盘上右击鼠标,选择属性。进入C盘属性后,点击里面的“磁盘清理”,运行后电脑会自动检 …

    2022小雪节气的饮食习俗

    2022小雪节气的饮食习俗有哪些你知道吗?小雪节气后,一些农家开始动手做香肠、腊肉,把多余的肉类用传统方法储备起来,等到 …

    选择窗帘注意元素有哪些

    装修过程中,不同风格的居室选择的窗帘款式是不一样的,很多消费者在选择窗帘的时候应该注意选择什么样的时候居室使用,选择窗帘 …

    惊蛰节气诗句描写 惊蛰节气要进行哪些农事

    导语:到了惊蛰节气的时候,人们要注意天气相关预报,很容易会出现冷暖天气的变化,要预防感冒。在古代,有许多诗人的诗句是关于 …

    串色的衣服怎么弄干

    串色衣服的清洁方法 若是衣服发生串色现象,则需立即将染色衣服分开,在衣服干燥之前使用洗衣液浸泡,能有效去除染色。被染色的 …

    涂防晒需要注意什么(涂防晒注意)

    正确涂抹防晒用品好防晒 取适量的防晒霜均匀点在额头、两颊、鼻子,下巴以及脖子部位,再由内往外均匀地向皮肤四周推开;涂抹耳 …

    2023年装修流行什么风格窗帘

    窗帘是居家必备软装用品,2023年装修流行什么风格窗帘呢?选择一款流行风格的窗帘来营造居室氛围时非常重要的,大家都知道选 …

    鼠曲草青团要蒸多久(鼠曲草做青团是煮烂还是打汁)

    去摘菜的时候,刚好发现田边有很多鼠曲草可以采摘,就想着摘一些回家做青团吃,但做好后的青团不知道蒸多久可以熟透吃呢? 鼠曲 …

    汉末是楷书的起源时期吗

    汉末是楷书的起源时期,是由隶书演变而来,根据目前保存的书迹来看,楷书最早是由东汉书法大家钟繇创造的。而到了唐代,是楷书最 …

    麻雀肉的功效与作用()

    麻雀肉质细嫩、脂肪少,有独特风味。它的肉对人体也有颇多好处,尤其是医用价值较高。那么下面我们来看看麻雀肉的功效与作用。 …

    来姨妈可以吃黄桃吗 来姨妈可不可以吃黄桃吗

    我超喜欢吃黄桃,真的是颜值好看又好吃,但是这几天来来姨妈了,又特别想吃黄桃,想请问来姨妈可以吃黄桃吗?姨妈期间吃黄桃好吗 …

    牛奶喝了会上火吗(牛奶喝了会上火吗小孩)

    牛奶向来是人们补充营养的绝佳饮品,可以为人体补充足量的蛋白质,但是有的人也有疑问,牛奶喝了会上火吗? 牛奶喝了会上火吗 …

    想和你的宠物“交流”?做几个动作或许就可以了!

    你能准确理解宠物叫声的含义吗?在电影《灵犬莱西》中有一个片段,说的是宠物犬莱西发现有人落井,对着主人狂吠不止,主人问狗狗 …

    颈椎第四节第五节突出怎么治疗(颈椎病五六节突出怎么治疗)

    颈椎第五六节突出一般可以物理治疗、药物治疗或者手术治疗等。 1、物理治疗: 患者是因为长时间的低头或者姿势不良导致的颈椎 …