上一篇的的的链接 赖了一个星期了,let us 接着上一篇的搞。 在上一篇里搞了一下基础设施建设,这一篇我们...稍微搞那么一丢丢上层建筑。 这一篇里本菜鸡想分享的tip
小程序微信登陆与前端登陆状态保存小程序登陆小程序登陆其实是个比较简单的基本操作,但凡是看过微信开发文档的应该都能懂,不过本菜鸡还是想尝试性的分享一下。 首先先明确一下 为啥要用微信登陆 ,在本菜鸡看来在这个项目里使用微信登陆主要有三个目的
然后,明确一下微信登陆过程中的几个概念 然后,结合本次项目的实际情况捋一下微信登陆的流程
$url='https://api.weixin.qq.com/sns/jscode2session?appid='.$this->appId.'&secret='.$this->appSecret.'&js_code='.$code.'&grant_type=authorization_code';
复制代码
$wxResult=json_decode(curl_get($url),true);
if(!$wxResult||!array_key_exists('openid',$wxResult)){
return ResultService::failure('获取openid不成功');
}
$openId=$wxResult['openid'];
复制代码
其实获得到openid微信登陆已经差不多了,剩下就是怎么用的问题了,下面的步骤是在本次项目的流程,供各位老哥参考
至此,本项目中微信登陆的流程搞完了。登陆完的结果就是,后台新增或更新了用户数据,小程序端有了token。 小程序登陆状态保持本菜鸡个人觉得常用的保持登陆状态的方法有两种
先说第一种,也是本项目采用的方法,其实在上面的步骤5、6已经把这个方法将清楚了,
第二种也在做网站用户登陆的时候是非常常见的操作,在撸网站的时候,用户登陆后把用户信息存到session里,用户在请求的时候能够从session中取到用户信息,之所以这样是因为,浏览器请求服务器,服务器响应时,会带一个sessionid回去给浏览器,浏览器下次请求时候会自动带着sessionid,服务器会根据sessionid来到相应的会话里,所以能取到session中的用户 BUT在小程序中有所不同,这是因为小程序网络访问是用的微信封装的wx.request,而该方法并不会把sessionid存下来,因此,为了能和网站登陆搞成一个逻辑,我们手动存一下sessionid,在下次请求的时候带着sessionid去即可。 部分代码如下 服务端(PHP) //前面先搞登陆,登陆完了把用户存到session里然后
return ResultService::success('',['sessionId'=>session_id()]);
复制代码
小程序端 //登陆
dataUtils.userLogin({ code: code, info: JSON.stringify(info) }).then(res => {
if (res.statusCode == '200') {
wx.setStorageSync('sessionId', res.data.data.sessionId);
$Message({
content: '登陆成功',
type: 'success'
});
this.checkUserLogin();
}
else {
$Message({
content: '登陆未成功',
type: 'error'
});
}
//请求例子(不同后端header名不一样,比如php的后端就是 PHPSESSID=你的sessionId)
function userJoinPromise(data,sessionId){
let url = 'travel/api/userJoin';
return getServerDataPromise(url, data, { 'Cookie': 'PHPSESSID=' + sessionId });
}
复制代码
下班了下班了,先写到这明天继续撸 |
温馨提示:这篇文章没有解决您的问题?欢迎添加微信:18948083295,有微信小程序专业人员,保证有问必答。转载本站文章请注明转自http://www.okeydown.com/(微信小程序网)。
- 微信扫描二维码关注官方微信
- ▲长按图片识别二维码