• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 禾匠4.4.8微信授权接口修复教程

禾匠4.4.8微信授权接口修复教程

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了禾匠4.4.8,微信授权接口修复等相关知识,希望对您有所帮助

有很多网友反应禾匠 4.4.8 获取用户信息失败,今天看了下源码,主要是因为微信修改了获取用户信息规则导致的。

见微信文档:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801


废话不多说,看下如何解决吧。


前端部分

首先找到前端登录弹框的文件,文件位于: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"></button>

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

<!-- #ifndef MP-WEIXIN --><button class="login-btn"    :open-type="openType"    scope="userInfo"    @getAuthorize="getUserInfo"    @getuserinfo="getUserInfo"    @click="getUserInfoClick"></button><!-- #endif --><!-- #ifdef MP-WEIXIN --><button class="login-btn"    scope="userInfo"    @getAuthorize="getUserInfo"    @getuserProfile="getUserProfile"    @click="getUserProfileClick"></button><!-- #endif -->

这里稍微调整了一下,如果是微信小程序则显示 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-WEIXINdata = {    encryptedData: userInfoResult.encryptedData,    iv: userInfoResult.iv,    rawData: userInfoResult.rawData,    signature: userInfoResult.signature,    code: loginResult.code,};// #endif// #ifndef MP-WEIXINdata = {    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'];

OK,大功告成。




分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 禾匠4.4.8微信授权接口修复教程

相关文章

  • 2022-04-29Photoshop创建有光泽的塑料3D文字教程
  • 2022-04-29MYSQL有哪些常用基本SQL语句
  • 2022-04-29PhotoShop打造Wacom中国风熊猫创意广告海报制作教程
  • 2022-04-29PHP如何判断是手机访问还是电脑访问
  • 2022-04-29Photoshop设计黑色大气的网页模板
  • 2022-04-29实例详解thinkphp6搭建后端api接口
  • 2022-04-29帝国cms中常用标签(总结)
  • 2022-04-29wordpress优化:纯代码禁止文章自动保存及修订版本的方法
  • 2022-04-29手动触发 Lazyload 显示懒加载的图片
  • 2022-04-29Photoshop设计金属质感的网页按钮

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • Photoshop CS6制作3D文字的片头动画教程
    • 巧用PS蒙版扣去黑色背景火焰文字
    • 服务器硬盘空间不足导致MySQL异常的一系列问题及解决办法
    • vue.js如何实现弹窗功能
    • 关于uniApp editor微信滑动问题
    • 微信小程序页面向下滚动时tab栏固定页面顶部实例讲解
    • Photoshop制作艺术玻璃质感的立体字教程
    • Illustrator教程:如何导出已经设计好的按钮
    • CSS如何修改placeholder的颜色
    • Photoshop制作质感金属文字效果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有