1. 在 *.wxml 页面添加一个按钮,open-type属性必须是getUserInfo,同时绑定一个点击事件;
<view><button open-type="getUserInfo" bind:tap="login" type="default">登录</button></view>
2. 在 *.jsl 页面 出发点击事件并 触发一个 wx.getUserProfile 方法用于弹出一个授权弹框
3.小程序端完整代码展示
login(evt){ wx.getUserProfile({ desc: 'desc', //desc不可删除 success:res=>{ // console.log(res); 成功回调 if(res.userInfo){ wx.login({ success:ret=>{ // console.log(ret); var code = ret.code wx.request({ url: 'http://www.tp6.com/api/login/login', //仅为示例,并非真实的接口地址 data:{ code:code }, method:"POST", header: { 'content-type': 'application/json' // 默认值 }, success (res) { console.log(res.data.data) wx.setStorageSync('token', res.data.data.token); wx.setStorageSync('openid', res.data.data.openid); wx.setStorageSync('session_key', res.data.data.session_key); wx.navigateTo({ url: '/pages/edit/edit', }) } }) } }) } } }) }4.展示后台代码(php)
public function wxLogin(Request $request) { $code = $request->post('code'); //小程序端获取 $appid = 'xxxxxxxxxxxxxxxxxxxx'; //微信平台获取 $appsecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //微信平台获取 //$grant_type = "authorization_code"; $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$appsecret&js_code=$code&grant_type=authorization_code"; $res = json_decode(file_get_contents($url), true); //返回openid,session_key $getUserInfo = User::getUserInfo($res['openid']); if ($getUserInfo) { $id = $getUserInfo['id']; } else { $params['openid'] = $res['openid']; $addUser = User::addUser($params); $id = $addUser['id']; } $res['token'] = signToken($id); return jsonData(200, 'ok', $res); }