这几天在看小程序,记录一下,方便自己日后回忆。
官方文档:
首先通过wx.login()获取code(未授权的情况下也能调用),获取code,code传到服务器,加上appid,secret,code调用接口获得openid,session_key。
小程序代码:
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey
wx.request({
url: '',//服务器后台url
data: { code: res.code },
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (data) {
//回调成功自行处理openid,session_key
//that.getUserInfo(data.data.data.session_key);//解码获取unionID
}
})
}
})
php后台:
<?php
$appid = '';
$secret = '';
$code = trim($_POST['code']); //小程序端传来的登陆code
$url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
$data = curlPOST($url);//GET,POST都可以
$data = json_decode($r,true);
$arr = array(
'code' => 200,
'msg' => '操作成功',
'data' => array(
'openid' => $data['openid'],
'session_key' =>$data['session_key']
)
);
echo json_encode($arr);
function curlPOST($url,$data=null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
if (curl_errno($ch)) {
return curl_error($ch);
}
curl_close($ch);
return $tmpInfo;
}