微信开发之网页授权获取用户信息(二)

时间:2021-05-18

在公众号的配置过程中,许多开发者会在菜单中加入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. 控制器调用(这里只贴其中一个方法)

/*** 产品列表* @return object 所有可用产品信息*/public function actionIndex(){//判断页面是否自动刷新if(isset($_GET['state'])) {$refresh = ;}else{$refresh = ;}//获取用户code$user = new UserinfoClass;$request = $user->getCode('r=store/index', );//该用户userid$userid = $user->info($request[]);$model = new Product;$list = $model->find()->where(['status' => ])->all();return $this->render('index',['list' => $list, 'refresh' => $refresh, 'userid' => $userid, 'request' => $request]);}

程序要求用户打开产品列表即获取用户信息并存入数据库,其中设计了几个变量作用如下:

$refresh:判断页面是否刷新,由于首次打开页面未进行oauth验证时才自动请求验证,避免反复刷新,这里用回调的state参数作为判断依据且设state=1(若有特定参数需要可将state赋值为所需值);

$request:即为验证请求地址

f. 视图自动刷新

只需要在视图中添加以下js代码即可

<script type="text/javascript">//自动请求获取code$(function(){var refresh = <?= $refresh; ?>;var request = '<?= $request[]; ?>';if(refresh == ){console.log();location = request;}});</script>

以上内容给大家介绍了微信开发之网页授权获取用户信息(二)的全部叙述,希望本文分享能够给大家带来帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章