这里简单介绍用php后台实现获取openid并保存到数据库;

 

微信的登陆流程是这样的 

 

首先前端发送请求到服务器:

wx.login({
        success: function (res) {
          var code = res.code;//发送给服务器的code
          wx.getUserInfo({
            success: function (res) {
              var userNick = res.userInfo.nickName;//用户昵称
              var avataUrl = res.userInfo.avatarUrl;//用户头像地址
              var gender = res.userInfo.gender;//用户性别
              if (code) {
                wx.request({
                  url: \'http://localhost/test/getopenid.php\',//服务器的地址,现在微信小程序只支持https请求,所以调试的时候请勾选不校监安全域名
                  data: {
                    code: code,
                    nick: userNick,
                    avaurl: avataUrl,
                    sex: gender,
                  },
                  header: {
                    \'content-type\': \'application/json\'
                  },
                  success: function (res) {
                    console.log(res.data);
                    wx.setStorageSync(\'name\', res.data.name);//将获取信息写入本地缓存
                    wx.setStorageSync(\'openid\', res.data.openid);
                    wx.setStorageSync(\'imgUrl\', res.data.imgurl);
                    wx.setStorageSync(\'sex\', res.data.sex);
                  }
                })
              }
              else {
                console.log("获取用户登录态失败!");
              }
            }
          })
        },
        fail: function (error) {
          console.log(\'login failed \' + error);
        }
})    

这样就实现了将前端获取的code发送到服务器,code每次获取的都不一样;

  

服务器getopenid.php代码:

<?php
text();
function text()
{
    $code = $_GET[\'code\'];//小程序传来的code值
    $nick = $_GET[\'nick\'];//小程序传来的用户昵称
    $imgUrl = $_GET[\'avaurl\'];//小程序传来的用户头像地址
    $sex = $_GET[\'sex\'];//小程序传来的用户性别
    $url = \'https://api.weixin.qq.com/sns/jscode2session?appid=yourAppid&secret=appSecret&js_code=\' . $code . \'&grant_type=authorization_code\';
    //yourAppid为开发者appid.appSecret为开发者的appsecret,都可以从微信公众平台获取;
    $info = file_get_contents($url);//发送HTTPs请求并获取返回的数据,推荐使用curl
    $json = json_decode($info);//对json数据解码
    $arr = get_object_vars($json);
    $openid = $arr[\'openid\'];
    $session_key = $arr[\'session_key\'];
    $con = mysqli_connect(\'localhost\', \'root\', \'123\');//连接数据库
    if ($con) {
        if (mysqli_select_db($con, \'students\')) {
            $sql1 = "select * from weixin where openid = \'$openid\'";
            $result = mysqli_query($con, $sql1);
            $result = mysqli_fetch_assoc($result);
            if ($result!=null) {//如果数据库中存在此用户的信息,则不需要重新获取
                $result = json_encode($result);
                echo $result;
            }
            else {//没有则将数据存入数据库
                if ($sex == \'0\') {
                    $sex = \'none\';
                } else {
                    $sex = \'1\' ? \'man\' : \'women\';
                }
                $sql = "insert into weixin values (\'$nick\',\'$openid\',\'$session_key\',\'$imgUrl\',\'$sex\')";
                if (mysqli_query($con, $sql)) {
                    $arr[\'nick\'] = $nick;
                    $arr[\'imgUrl\'] = $imgUrl;
                    $arr[\'sex\'] = $sex;
                    $arr = json_encode($arr);
                    echo $arr;
                } else {
                    die(\'failed\' . mysqli_error($con));
                }
            }
        }
    } else {
        die(mysqli_error());
    }
}

?>

  

版权声明:本文为tmdsleep原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/tmdsleep/p/10924994.html