# 修复微擎网页快照虚拟微信用户-网页授权-获取不到粉丝信息 **Repository Path**: csitian_admin_admin/snapshotuser ## Basic Information - **Project Name**: 修复微擎网页快照虚拟微信用户-网页授权-获取不到粉丝信息 - **Description**: 微信更新了网页授权页面逻辑,若不规范使用snsapi_userinfo授权将直接进入网页快照页模式,但进入此模式后获取的用户信息为虚拟账号,昵称(微信用户),头像(灰白),openid(随机),使得会员系统混乱,且登录的随机帐号无法支付。(转载) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2022-12-05 - **Last Updated**: 2024-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 修复微擎网页快照虚拟微信用户-网页授权-获取不到粉丝信息 #### 本方法及本文是转载的,尚不知原作是谁。 #### 介绍 微信更新了网页授权页面逻辑,若不规范使用snsapi_userinfo授权将直接进入网页快照页模式,但进入此模式后获取的用户信息为虚拟账号,昵称(微信用户),头像(灰白),openid(随机),使得会员系统混乱,且登录的随机帐号无法支付。 微信的快照页模式将会默认对用户屏蔽网页授权弹窗,用户在快照页中仅可进行滑动浏览操作,其他交互将被限制,并提示用户 “该网页需获取个人信息才可使用完整服务,当前仅可浏览部分内容”。用户如需要使用完整网页服务,可轻触右下角 “使用完整服务” 按钮触发授权弹窗,用户确认后进入原网页。 #### 使用说明 1. 在文件微擎目录/app/source/auth/oauth.ctrl.php文件中添加下面代码 ``` if($oauth['is_snapshotuser']){ template('auth/complete'); exit; } ``` ![输入图片说明](imgimage.png) 2. 然后添加文件/app/themes/default/auth/complete.html作为一个提示模版即可,如果不用摸板的话,直接messgae去提示用户即可。(complete.html文件放在gitee上在) 3. 操作完成后,如果想测试效果,那就直接按照上面的要求条件,记得一定要退出登录,清空缓存,进入后触发规则。若还不行的话,就将/framework/class/account/weixin.account.class.php文件下的1659行的getOauthUserInfoUrl方法换成下面的代码。 ``` public function getOauthUserInfoUrl($callback, $state = '', $extra = array()) { $url_param = ''; if (!empty($extra['forcePopup'])) { $url_param .= '&forcePopup=true'; } if (!empty($extra['forceSnapShot'])) { $url_param .= '&forceSnapShot=true'; } return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->account['key']}&redirect_uri={$callback}&response_type=code&scope=snsapi_userinfo&state={$state}{$url_param}#wechat_redirect"; } ``` ![输入图片说明](img123image.png) ![输入图片说明](img1236image.png)