第一步:获取小程序的APPID和APPSecret。
打开网址:https://mp.weixin.qq

扫码登录,选择小程序登录,选择小程序登录,选择小程序登录。千万不要选择了公众号登录,不然获得的APPID和APPSecret不对,导致Code无效。

得到AppID和AppSecret,记录下来,后面要用到。

第二部,通过wx.login(Object object)获取登录凭证(code)
调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。详情请见微信小程序开发文档。
JS代码:

	wx.login({
      success:function(res){
        console.log(res.code)
        //发送请求
        wx.request({
          url: 'http://XX.XXX.XXX.XX/Test.php', //接口地址,改成自己的
          data: {code:res.code},
          header: {
            'content-type': 'application/json' //默认值
          },
          success: function (res) {
            console.log(res.data)
          }
        })
      }
    })

PHP代码:

//从前端接收到的code
$code = $_GET["code"];
//配置appid
$appid = "一开始叫保存的AppID";
//配置appscret
$secret = "一开始叫保存的AppSecret";
//api接口
$getUrl = "https://api.weixin.qq/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$code."&grant_type=authorization_code";
//获取GET请求
//php请求网络的方法
function curl_get($url, &$httpCode = 0) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //不做证书校验,部署在linux环境下请改为true
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    $file_contents = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $file_contents;
}

$result = curl_get($getUrl);//请求拼接好的url
$wxResult = json_decode($result, true);
	if (empty($wxResult)) {
        echo '获取openid时异常,微信内部错误';
    } else {
        $loginFail = array_key_exists('errcode', $wxResult);
        if ($loginFail) {//请求失败
            var_dump($wxResult);
        } else {//请求成功
            $openid = $wxResult['openid'];
            echo "获取openid成功成功:" . $openid;
        }
    }

我把wx.login()写在了一个方法里面,每次点击按钮的时候就会获取用户的openid并且在控制台中显示出来。

弄了一整天,各种踩坑,记录一下。

更多推荐

【微信小程序】获取用户openid实例(前端+后端)