自从微信公众号平台更新了用户授权的规则,微擎以前默认自动授权的方式,总是会出现网页快照,因为微擎默认的方式是打开前端默认跳转到微信授权的那个链接;正是因为没有经过用户的点击就授权,会常常出现网页快照,导致系统里总是会出现很多“微信用户”的虚拟用户,导致用户在人人商城或其他商城内出现下单付款失败的问题。

3793965278.png

现在我们只需要把微擎默认的自动授权方式,改为引导用户手动点击授权就可以了;下面是修改的方式,需要修改到微擎源码。

第一步,新建一个手动授权的模板html文件,我这里命名为publicAuth.html,文件里的代码如下(可以根据自己的需要修改):

<!DOCTYPE html><html lang="zh-cn"><head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
    <title>授权登录-{$_W['account']['name']}</title>
    <meta name="keywords" content="{$_W['account']['name']}">
    <meta name="description" content="{$_W['account']['name']}">
    <style>
        .container {            padding: 50px 15px;            text-align: center;
        }        .logo {            width: 140px;            margin: 0 auto 42px;            text-align: center;
        }        .logo img {            max-width: 100%;            vertical-align: middle;
        }        .container h2 {            margin: 0;            padding: 0;            line-height: 44px;            font-size: 24px;            font-weight: 500;
        }        .container p {            margin: 0;            padding: 0;            line-height: 34px;            font-size: 16px;
        }        .auth-btn {            width: 98%;            display: block;            line-height: 50px;            background: #0bb20c;            color: #FFFFFF;            text-align: center;            font-size: 20px;            border-radius: 24px;            text-decoration: none;            margin-top: 44px;
        }        .is-snapshoot {            display: none;            width: 100%;            height: 100%;            position: absolute;            top: 0;            left: 0;            background: url('resource/images/snapshoot_bg.png') no-repeat;            background-position: center;            background-size: 100% 100%;            z-index: 1;
        }    </style></head><body><div class="container">
    <div class="logo">
        <img src="{$_W['account']['logo']}"
             alt="{$_W['account']['name']}"></div>
    <h2>您好,请先登录~</h2>
    <p>授权登录后,可以更好的享受我们的服务!</p>
    <div class="login-btn">
        <a class="auth-btn" href="{$forward}">点击授权登录</a>
    </div></div><div class="is-snapshoot" {if isset($_GPC['is_snapshotuser']) && $_GPC['is_snapshotuser'] == '1' }style="display:block;"{/if} ></div></body></html>

新建好文件后,我们把它放在目录:/app/themes/default/auth/publicAuth.html 下

第二步,修改 /app/common/bootstrap.app.inc.php这个文件,只需要在这块代码下

if ($oauth_type == 'snsapi_base') {
            $forward = $oauth_account->getOauthCodeUrl($callback, $state);
        } else {
            $forward = $oauth_account->getOauthUserInfoUrl($callback, $state);
        }

大概168行附近新增:

template('auth/publicAuth');
exit();

第三步,修改用户授权SESSION有效时间;把 /app/common/bootstrap.app.inc.php 文件里的
这段代码

WeSession::start($_W['uniacid'], CLIENT_IP);

替换成

WeSession::start($_W['uniacid'], CLIENT_IP, (15 * 86400)); //15天有效期

上面的有效期根据自己的情况设置

1231416469.png

第四步,用户不授权的情况,再次进入系统,也会变成虚拟用户;修改文件:/app/source/auth/oauth.ctrl.php,在文件这段代码:

$oauth = $oauth_account->getOauthInfo($code);

下面新增(大概31行左右):

//  68sucai.cn start
if( isset($oauth['is_snapshotuser']) &&  intval($oauth['is_snapshotuser']) === 1){
    $_SESSION['oauth_openid'] = '';
    $backUrl = urldecode($_SESSION['dest_url']).'&is_snapshotuser=1'; //设置当前为快照模式,可以在授权页加个箭头引导右下角微信官方授权页面,这里可以自由发挥
    header('Location: ' . $backUrl);    exit();
}
//  68sucai.cn end

第五步,把下面这张图片上传到 这个目录下/app/resource/images/snapshoot_bg.png

529389368.png

当访问快照的时候,会显示下面的那个页面,不是快照没有登录则跳转到登录页面。

510770667.jpg

最终,当用户访问人人商城或其他插件的时候,就会先跳转到手动授权登录页面,基本避免了用户打开我们商城就出现快照的模式;

1. 本站所有资源除特别说明外,均来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,除特殊说明均不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"www.68sucai.cn",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们.。
你们有qq群吗怎么加入?
当然有的,你可以点击这里加入QQ交流群

发表评论 123 条评论

  • 76会员数(个)
  • 1235资源数(个)
  • 12357日更新(个)
  • 今日更新(个)
  • 稳定运行(天)

提供最优质的资源集合

加入VIP
×
0.088074s