说在前面
先说下这个系列的定位。我不打算从零开始讲解微信小程序,直接就是搭建一个可以使用的微信小程序框架。主要是想把自己作为一个java后端接触小程序开发之后遇到的一些坑和一些经验分享一下。好让对微信小程序开发感兴趣的后端同学快速上手,以及避免一些弯路。
我在刚刚开始开发小程序找资料的时候,发现资料都是比较分散的。比如想实现登录并和后端进行交互,那只能找到小程序登录并与后端交互。没有整个的一个系列,介绍后端的同学如何系统的开发一个完整的小程序。当然了,我也是刚刚入坑的萌新,这个系列主要是想记录一下自己在开发小程序时的一点心得体会,内容不可避免的会很业余。不过这个系列我的定位就是快速上手,就是讲如何快速的上手小程序整个流程。
小程序的界面
微信小程序授权获取用户信息
这一步不夸张的说,耗费我整整一天的时间。除了微信小程序官方获取用户信息接口变更导致网上好多资料失效(并不是说以前的接口不能使用了。如果使用老接口会在控制台出现warning信息)。然后我们还有一个需求就是讲当前用户传给后台,由后台判断这个用户有没有存在数据库中,如果没有则保存此用户的信息。
那先来解决第一个问题,如何获取用户授权。下面的代码是授权弹出窗的代码。
<view wx:if="{{isHide}}">
<view wx:if="{{canIUse}}">
<view class='header'>
<image src='/images/wx.png'></image>
</view>
<view class='content'>
<view>申请获取以下权限</view>
<text>获得你的公开信息(昵称,头像等)</text>
</view>
<button class='bottom' type='primary' open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bindGetUserInfo">
授权登录
</button>
</view>
<view wx:else>请升级微信版本</view>
</view>
这是在index页面写的,整个index页面由wx:if wx:else分成了四块,分别是获取授权时显示的模块,用户被禁用时显示的模块,授权成功后显示的页面以及用户禁止授权时的页面。
点击button按钮触发js的bindGetUserInfo 方法
bindGetUserInfo: function(e) {
var that = this;
if (e.detail.userInfo) {
var that = this;
app.globalData.userInfo = e.detail.userInfo
that.setData({
isHide: false
})
wx.getUserInfo({
success: function(res) {
var userNick = res.userInfo.nickName;
var avataUrl = res.userInfo.avatarUrl;
var gender = res.userInfo.gender;
wx.login({
success: function(res) {
var code = res.code
wx.request({
url: 'http://localhost:8080/user',
method: "POST",
data: {
code: code,
nick: userNick,
imgUrl: avataUrl,
gender: gender
},
success: function(res) {
app.globalData.userInfo = res.data.data
app.globalData.canUserEnable = app.globalData.userInfo.status
that.setData({ canUserEnable: app.globalData.canUserEnable})
}
})
}
})
}
})
} else {
wx.showModal({
title: '警告',
content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入',
showCancel: false,
confirmText: '返回授权'
})
}
}
后台拿到数据之后可以根据用户当前的code,再调用微信平台的相关接口获取用户详细信息,由此来判断当前系统中是否已经存在此用户。
|
请发表评论