• 禾匠V4微信授权接口修复教程介绍
  • 免责需知

    ① 本站所有资源均来源于网络收集,一切版权©归原作者所有,请保留原版权信息。
    ② 不排除源码存在BUG,残缺或加密的可能,请三思后再买,否则购买后一率不能退款
    ③ 源码仅供参考与学习,不确保能正常演示,也不包含其中的技术服务。
    ④ 资源下载不含技术服务,需付费安装请联系客服100元/次。
    ⑤ 本站分享仅供参考学习和演示,禁止商用,如需商用,请从正规渠道选择购买正版!使用正版!支持正版!维护一个良好的知识产权环境。
    ⑥ 如发现链接失效或者密码有误,请联系客服。
    ⑦ 如果付款后下载不了,请提联系客服,24小时内解决,如果解决不了,会为您退款。
    ⑧ 侵权反馈邮箱:2413035560@qq.com

    前端部分
    首先找到前端登录弹框的文件,文件位于:src/components/basic-component/app-layout/app-user-login/app-user-login.vue

    登录按钮代码:

    <button class="login-btn"
        :open-type="openType"
        scope="userInfo"
        @getAuthorize="getUserInfo"
        @getuserinfo="getUserInfo"
        @click="getUserInfoClick"
    >
     

    这个按钮写在一个条件编译判断里面,如果是5+小程序就会显示这个按钮,但是微信已经修改了规则,所以明显这个就有问题了。但是之前开发者的逻辑也不想进行太大的修改(主要是懒+避免出现乱七八糟的bug),所以我们修改代码如下:

    <button class="login-btn"
        :open-type="openType"
        scope="userInfo"
        @getAuthorize="getUserInfo"
        @getuserinfo="getUserInfo"
        @click="getUserInfoClick"
    >
    

    这里稍微调整了一下,如果是微信小程序则显示 getProfile 这个按钮,其他小程序平台还是显示原来那个按钮。接着我们新增两个方法来处理微信小程序端的点击事件。

        getUserProfileClick(e) {
            // #ifdef MP
            this.$store.commit('user/showLoginModal', false);
            const resolve = this.$user.getUserInfoResolve;
            const reject = this.$user.getUserInfoReject;
            this.$event.on(this.$const.EVENT_USER_LOGIN, true).then(() => {
            this.$jump({
                open_type: 'reload'
            })
        });
        uni.getUserProfile({
            desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
            success: (res) => {
                console.log(res)
                if (res.errMsg !== 'getUserProfile:ok') {
                    this.$store.commit('user/showLoginModal', true);
                    return reject(res.errMsg);
                } else {
                    return resolve(res);
                }
            }
        })
          // #endif
    }

    OK,登录弹窗这边就修改完成了,这边主要修改了微信小程序端获取用户信息的方式,以适应微信规则的调整。

    接着处理一下登录那边的JS文件,文件位于:src/core/user.js

    找到 getAccessToken() 方法(13行),这里主要修改一下提交的数据。因为之前是基于 getUserInfo 方法获取用户信息的,现在改成了 getUserProfile 数据格式发生了一些变化,所以这里也需要修改一下提交数据的格式。

    在 uni.login 的 success 回调里面,修改就行了:

    let data
    // #ifdef MP-WEIXIN
    data = {
        encryptedData: userInfoResult.encryptedData,
        iv: userInfoResult.iv,
        rawData: userInfoResult.rawData,
        signature: userInfoResult.signature,
        code: loginResult.code,
    };
    // #endif
    // #ifndef MP-WEIXIN
    data = {
        encryptedData: userInfoResult.detail.encryptedData,
        iv: userInfoResult.detail.iv,
        rawData: userInfoResult.detail.rawData,
        signature: userInfoResult.detail.signature,
        code: loginResult.code,
    };
    // #endif

    OK,前端部分我们已经修改完了。

    后端部分
    我之前调试的时候发现登录弹框没有弹出来(如果已经配置好了 SSL 证书应该不会有这个问题了),排查发现返回接口的路由有点问题,如果有童鞋遇到没有弹出登录弹框的,可以尝试修改一下后端文件 forms/common/CommonAppConfig.php

    找到 getDefaultPageList 方法,将

    $picUrl = str_replace('http://', 'https://', $picUrl); 

    注释(上线后再取消注释)

    或者修改为:

    if (!getenv('YII_DEBUG')) {
        $picUrl = str_replace('http://', 'https://', $picUrl);
    }

    注:需要自己在根目录添加 .env 环境变量文件,并配置对应的环境变量值,这种方式更推荐。

    接着上面,后端获取用户信息失败出问题的文件就是这个文件:vendor/luweiss/wechat/src/Wechat/Wechat.php

    但是它又是一个第三方库的文件,所以基于 no hack core 原则我们是不建议修改它的,但是基本上大家都是不会升级了吧,所以修改也无所谓了。。

    修改这个很简单,加一行代码就搞定。找到 decryptData 方法,在最后的 return 前面添加一行代码:

    $dataObj['openId'] = $sessionData['openid'];
    ① 本网站名称及网址:分享源码网 | ShareCode.SITE。
    ② 本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。
    ③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
    ④ 如果你也有好源码或者教程,可以联系小编,有钻石奖励和额外收入。
    ⑤ 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。
    ⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
    ⑦ 本站资源大多存储在云盘,如发现链接失效请反馈我们会第一时间更新。

    分享源码网 » 禾匠V4微信授权接口修复教程

    提供优质的资源集合

    加入VIP 还没有注册会员?
    资源总数1663
    注册用户1721
    本周更新26
    今日更新5