在公众号的配置过程中,许多开发者会在菜单中加入HTML5页面,有时在页面内需要访问页面的用户信息,此时就需要网页授权获取用户基本信息
提醒大家:本文介绍讲述的内容是基于yii2.0框架
1、设置授权回调域名:开发 ---> 接口权限
找到“网页授权获取用户基本信息”,点击后面对应的“修改”,在弹框响应位置填写授权回调域名即可,此处的域名不需要加http:// (关于网页授权回调域名的说明详情可参考公众平台开发者文档)
2、获取授权
关于OAuth2.0博主参考的是方倍工作室的博文http://mon\tools\EmojiTool;/*** 微信用户基本信息获取*/class UserinfoClass {/*** 用户授权并获取code * @return string 用户code*/public function getCode($route, $state){$re = new OauthTool;$request = $re->authorize_addr($route, $state);$code = isset($_GET['code']) ? $_GET['code'] : '';return [$request,$code];}/*** 获取用户信息并写入数据库(之后加参数传给code)*/public function info($code) {$re = new OauthTool;//获取access token$access = $re->access_token($code);$token = json_decode($access,true);//header("Content-type: text/html; charset=gbk"); //获取用户信息if(count($token) != ) {$response = $re->userinfo($token['access_token'], $token['openid']);$user = json_decode($response,true);//用户昵称转换//$user['nickname'] = EmojiTool::emoji_trans($user['nickname']);if($model = User::findOne(['openid' => $user['openid'] ])) { //用户已存在更新数据$model->attributes = $user;$model->modify_time = time();$model->save(false);}else{ //用户不存在写入$model = new User;$model->attributes = $user;$model->create_time = time();$model->save(false);}}return isset($model->id) ? $model->id : '';}}
e. 控制器调用(这里只贴其中一个方法)
程序要求用户打开产品列表即获取用户信息并存入数据库,其中设计了几个变量作用如下:
$refresh:判断页面是否刷新,由于首次打开页面未进行oauth验证时才自动请求验证,避免反复刷新,这里用回调的state参数作为判断依据且设state=1(若有特定参数需要可将state赋值为所需值);
$request:即为验证请求地址
f. 视图自动刷新
只需要在视图中添加以下js代码即可
以上内容给大家介绍了微信开发之网页授权获取用户信息(二)的全部叙述,希望本文分享能够给大家带来帮助。