uni-app小程序登录功能
小程序登录逻辑
①通过uni.login()接口获取小程序用户的code值
uni.login({ success(res) { // // {errMsg: "login:ok", code: "033vPJhy1W2RH906Y0gy1B5Chy1vPJhO"} console.log(res) if (res.code) { // 发起网络请求 wx.request({ url: 'http://wuxinzhe.top/test/test.php', data: { code: res.code } }) } else { console.log('登录失败!' + res.errMsg) } } }) |
②服务器端通过调用code2session接口通过code换取session_key(只能用一个code调取一次)和用户的openid
https://api.weixin.qq.com/sns/jscode2session?appid={$appId}&secret={$secret}&js_code={$code}&grant_type=authorization_code
php代码
<?php $appId="wxaf151ae9618b2911"; $secret="d9ba0f5c57905040d8af7d71aa77af9e"; $code="033VjYWj0hgvmq1KWG0k0G9ZWj0VjYWC"; $url="https://api.weixin.qq.com/sns/jscode2session?appid={$appId}&secret={$secret}&js_code={$code}&grant_type=authorization_code"; // create curl resource $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); //请求接口成功,返回用户的openid和session_key //{"session_key":"gwKsCu8np9ps3a89bgnoRQ==","expires_in":7200,"openid":"orwIJ0fjAUInTl-7kGBkdVRw4MKM"} var_dump($output); //存入session中逻辑处理 //返回给小程序前端 curl_close($ch); ?> |
③小程序前端中,收到服务器端返回的信息,自定义登录状态,存入缓存中,uniapp中调用uni.setStorageSync(KEY,DATA)方法.与openid和session_key关联
④每次请求之前,获取缓存中的数据uni.getStorageSync(KEY),携带着状态去请求,服务器端查询openid和session_key,返回业务数据