小程序登录逻辑

①通过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,返回业务数据

发表评论

邮箱地址不会被公开。 必填项已用*标注