微信小程序获得用户头像等信息
首先:使用wx.login成功后会返回一个json,
成功时如:{errMsg: "login:ok", code: "0611rxBI0WFaRd2q0YCI0lnLBI01rxBB"}
接着:获得这个code后就可以使用auth.code2Session获得用户唯一凭证诸如openid。openid具有唯一性,每一个微信对应一个小程序只有其唯一的一个,更换手机也不会变。
需要注意的是上面的code只能够使用一次,多次使用就会提示“code been used”
当然,每一次使用wx.login成功时code是不一样的,通过wx.request将这个code发送到服务端,服务端程序通过GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code得到openid
在小程序中代码:
// 登录S wx.login({ success(res) { if (res.code) { //登陆成功并成功返回code便发起网络请求获得OPENID wx.request({ url: 'test.php', data: {//将res.code发送到服务端test.php code: res.code }, success: function(res){ wx.setStorage({//将得到的openid存储到缓存里面方便后面调用 key:"openid", data:res.data.openid }) } }) }else{ console.log('登录失败!'+res.errMsg); }}}) //登陆E
test.php中主要代码为
function geturl($url){//geturl函数 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); return $output; } $appid="wx5df8***"; $secret="dd126***";//小程序appid与secret配置 if(isset($_GET["code"])&&$_GET["code"]<>""){ $js_code=$_GET["code"]; }else{ die("ERROR"); }//获得js_code $url="https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$js_code."&grant_type=authorization_code"; $tmpstr=geturl($url); echo $tmpstr;//输出数据以供小程序端获得
以上便是我对wx.login的使用。至于wx.login放在哪里,个人觉得放在app.js中的onLaunch中,这样在小程序启动时就可以获得openid并存储,方便后面页面的调用。