微信公众号实现扫码获取微信用户信息(网页授(2)
下面是写跳转后的操作
(1)接收传过来的值
(2)取得openid
(3)根据全局access_token和openid查询用户信息
(4)将信息写入数据库
获取openid或者其他的东西,用到下面的方法,可以快速截取到需要的东西
function getJson($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); return json_decode($output, true); }
接下来就是将上面的步骤逐一实现,代码如下:
public function getUserInfo() { $appid = "*****"; //公众号唯一标识 $secret = "*****"; //应用秘钥 //$code是回调的时候地址上带的 只需要get方式接收就可以了 $code = $_GET["code"]; //获取传过来的值 $htjid = $_GET["id"]; //第一步:取得openid $oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code"; $oauth2 = $this->getJson($oauth2Url); //第二步:根据全局access_token和openid查询用户信息 $access_token = $oauth2["access_token"]; $openid = $oauth2['openid']; $get_user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN"; $userinfo = $this->getJson($get_user_info_url); //写入数据库微信用户 M()->startTrans();//开启事务 $n = M("zp_user"); //写入的表 $openid = $data['openid'] = $userinfo['openid']; //微信用户openid $data['sex'] = $userinfo['sex']; //性别 $data['headimgurl'] = $userinfo['headimgurl']; //头像 $data['province'] = $userinfo['province']; //地区sheng $data['city'] = $userinfo['city']; //地区shi $data['subscribe_time'] = time(); //时间 $data['qr_scene'] = $htjid; //传过的值 $data['nickname'] = $userinfo['nickname']; //昵称 $z = $n->lock(true)->add($data); if(!$z) { M()->rollback();//回滚 $this->error('添加错误!'); }else{ M()->commit();//事务提交 } }
到此,就可以实现扫描二维码获取用户信息了,并且将用户信息写入数据库
这是第一个二维码,生成后,就可以将id的参数值换成前面传过来的值,也就是扫码的值 $tid = 0; //传值的参数
如果想要自己的二维码页面好看的话,比如想要把自己的微信昵称和二维码合成一张图片的话,也是可以实现的,这就要用到图片的合成了,下次再说吧。
总结
以上所述是小编给大家介绍的微信公众号实现扫码获取微信用户信息(网页授权),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!