CRMEB论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 535|回复: 9

[非bug] 解决小程序频繁需要重新授权的问题!

[复制链接]

3

主题

6

帖子

61

积分

vip4

Rank: 4

积分
61
发表于 2019-5-1 16:33:46 | 显示全部楼层 |阅读模式
bug反馈
版本: CRMEB-XCXKY v2.6.*
问题分类:  
源码类型: 淘宝购买
模块: 小程序
账号信息: 您无权查看
浏览器:  
本帖最后由 xiamms 于 2019-5-8 15:08 编辑

小程序2.6目前有一个很烦人的BUG,就是经常需要重新授权。这个会对用户造成很大的困惑!
因此我摸索了两天,终于解决了这个问题。
废话不多说,直接修改!

找到文件:/view/crmebNewUI/components/authorize/authorize.js

第一处:找到函数:setAuthStatus() 在第一行添加红色部分的代码


    //检测登录状态并执行自动登录
    setAuthStatus() {
      //直接从缓存中读取token,无需频繁授权获取token
      if (wx.getStorageSync('token_expiration')) {
        var timestamp = Date.parse(new Date());
        var expiration = wx.getStorageSync('token_expiration');
        if (expiration && expiration > timestamp){
            if (wx.getStorageSync('token30')) {
              app.globalData.token = wx.getStorageSync('token30');
              app.globalData.isLog = true;
            }else{
              wx.clearStorage();
              app.globalData.isLog = false;
            }
        }else{
          wx.clearStorage();
          app.globalData.isLog = false;
        }
      }


      var that = this;
      that.setErrorCount();
      wx.getSetting({
        success(res) {
          if (!res.authSetting['scope.userInfo']) {
            //没有授权不会自动弹出登录框




第二处:找到函数:getUserInfoBydecryptCode() 添加红色加粗的代码。

    //登录获取访问权限
    getUserInfoBydecryptCode: function () {
      var that = this;
      wx.getStorage({
        key:'cache_key',
        success:function(res){
          if(res.data){
            var cache_key = res.data;
            wx.getUserInfo({
              lang: 'zh_CN',
              success: function (res) {
                var pdata = {};
                pdata.spid = app.globalData.spid;//获取推广人ID
                pdata.code = app.globalData.code;//获取推广人分享二维码ID
                if (res.iv) {
                  pdata.iv = encodeURI(res.iv);
                  pdata.encryptedData = res.encryptedData;
                  pdata.cache_key = cache_key;
                  //获取用户信息生成访问token
                  app.basePost(app.U({ c: 'login', a: 'index' }), pdata, function (res) {
                    if (res.data.status == 0) return app.Tips({ title: '抱歉,您已被禁止登录!' });
                    else if (res.data.status == 410) {
                      wx.clearStorage();
                      wx.hideLoading();
                      if (that.data.iShidden == true) that.setData({ iShidden: false });
                      return false;
                    }
                    //取消登录提示
                    wx.hideLoading();
                    //关闭登录弹出窗口
                    that.setData({ iShidden: true, ErrorCount: 0 });
                    //保存token和记录登录状态
                    var timestamp = Date.parse(new Date());
                    var expiration = timestamp + 3600000*24*30;
                    wx.setStorageSync('token30', res.data.token);  //缓存token
                    wx.setStorageSync('token_expiration', expiration);  //缓存token的过期时间

                    app.globalData.token = res.data.token;
                    app.globalData.isLog = true;
                    //执行登录完成回调


第三处:\application\core\util\TokenService.php


1找到:public static function getToken($string=1,$openid='0',$randstring='0',$valid_peroid=259200)

修改为:public static function getToken($string=1,$openid='0',$randstring='0',$valid_peroid=1555200)


2找到:private static function enToken($string,$openid='0',$randString='',$valid_peroid=259200)

修改为:private static function enToken($string,$openid='0',$randString='',$valid_peroid=1555200)




到这里就全部搞定了!!用户只需要一次授权,即可保存token到缓存中,30天有效!
如果觉得对你有所帮助,请回复支持一下,后续将分享其他更有趣的修改。





3

主题

6

帖子

61

积分

vip4

Rank: 4

积分
61
 楼主| 发表于 2019-5-1 16:52:57 | 显示全部楼层
本帖最后由 xiamms 于 2019-5-1 17:09 编辑

已经完善好代码了。目前测试,暂时没有问题!
回复

使用道具 举报

10

主题

107

帖子

453

积分

vip4

Rank: 4

积分
453
发表于 2019-5-1 22:35:15 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

1

主题

5

帖子

64

积分

vip4

Rank: 4

积分
64
发表于 2019-5-7 23:21:08 | 显示全部楼层

谢谢楼主分享
回复

使用道具 举报

41

主题

367

帖子

1105

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1105

突出贡献荣誉管理论坛元老

发表于 2019-5-8 15:13:09 | 显示全部楼层
谢谢 分享
回复

使用道具 举报

41

主题

367

帖子

1105

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1105

突出贡献荣誉管理论坛元老

发表于 2019-5-8 15:16:05 | 显示全部楼层
论坛已经修复这个问题了,可以到会员中心下载更新包
回复

使用道具 举报

3

主题

6

帖子

61

积分

vip4

Rank: 4

积分
61
 楼主| 发表于 2019-5-9 00:02:07 | 显示全部楼层
admin 发表于 2019-5-8 15:16
论坛已经修复这个问题了,可以到会员中心下载更新包

好的!再反馈一个BUG。购物车出现一些下架的商品,然后就无法清空了。
回复

使用道具 举报

2

主题

33

帖子

152

积分

vip4

Rank: 4

积分
152
发表于 2019-5-9 09:27:55 | 显示全部楼层
这个需要更新小程序版本吗?只是上传到自己的服务器是不行的吧?
回复

使用道具 举报

41

主题

367

帖子

1105

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1105

突出贡献荣誉管理论坛元老

发表于 2019-5-9 11:08:41 | 显示全部楼层
xiamms 发表于 2019-5-9 00:02
好的!再反馈一个BUG。购物车出现一些下架的商品,然后就无法清空了。

这个很早就修复了
回复

使用道具 举报

0

主题

1

帖子

57

积分

vip4

Rank: 4

积分
57
发表于 2019-6-10 15:56:40 | 显示全部楼层
已经被楼主坑了,同一台手机切换微信号后就出现问题,会显示token用户信息不存在小心使用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|CRMEB论坛

GMT+8, 2019-7-18 07:16 , Processed in 0.028630 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表