第一步:获取小程序的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实例(前端+后端)
发布评论