- <button @click="login"></button>
- login(){
- var self=this;
- uni.showLoading({
- mask:true,
- title: '正在登录···',
- complete:()=>{}
- });
- uni.login({
- provider: 'weixin',
- success: function (loginRes) {
- let js_code=loginRes.code;//js_code可以给后台获取unionID或openID作为用户标识
- // 获取用户信息
- uni.getUserInfo({
- provider: 'weixin',
- success: function (infoRes) {
- //infoRes里面有用户信息需要的话可以取一下
- let username=infoRes.userInfo.nickName;//用户名
- let gender=infoRes.userInfo.gender;//用户性别
- let formdata={code:js_code,username:username,sex:gender};
- //login是接口地址,看下面PHP代码
- self.$go.post("/login",formdata).then(res=>{//这是我封装的请求方法
- if(res.code==200){
- //登录成功
- }
- })
- },
- fail:function(res){}
- })
- },
- fail:function(res){}
- })
- }
后台php接口示例,仅供参考,一定要理清逻辑
- /**
- * 小程序登录
- * code 登录时获取的 code
- * username 用户名
- * sex 用户性别
- */
- public function login(){//使用的tp5框架
- $appid = 'wxxxxxxxx';//微信小程序appid
- $secret = '211kdshsakdxxxxxxxxx1h2k';//微信小程序secret
- $code = input('code');//接收code参数,换取用户唯一标识
- $username = input('username');//接收用户名
- $sex = input('sex');//接收用户性别
- //下面url是请求微信端地址获取用户唯一标识的,对应的appid和secret改成自己的
- $url="https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$code."&grant_type=authorization_code";
- $res = $this->https_request($url);//https_request是封装的发送请求的方法
- $res = json_decode($res,true);//将返回结果JSON化
- if(isset($res['errcode'])){
- //如果请求微信那边报错,就返回前端报错信息
- }else{
- //请求微信那边成功,获取unionid,先判断数据库有没有
- $user = db('user')->where(array('unionid'=>$res['unionid']))->find();
- if(empty($user)){
- //如果没有就将用户信息插入到数据库,这里就不做演示了。
- }else{
- //存在用户就返回登陆成功
- }
- }