微信小程序中的授权、登录注册token和code


一、实现思路

  1. 刚开始进入小程序时,先判断是否授权。
  2. 如果没有授权,显示授权button按钮,让用户实现点击的功能,就是通过button组件去触发getUserInfo接口,通过调用 wx.login获取code码,读取登录接口,判断用户是否是新用户。
  3. 如果是新用户,则接着通过调用wx.login获取code码,然后读取注册接口,注册完之后在读取登录,保存后台返回的token,实现登录。
  4. 如果不是新用户,也是保存后台返回的token,则直接获取个人信息。
  5. 如果已经授权了,在判断token是否存在,如果不存在,则读取登录接口,跟上面步骤一样。如果存在,则直接跳过这个页面,进入首页。
    在这里插入图片描述

二、实现登录的代码

1.app.js

代码如下(示例):

//获取用户信息
wx.getSetting({
	success:res => {
		if(res.authSetting['scope.userInfo']){
			//已经授权,可以直接调用getUserInfo获取头像昵称,不会弹框
			wx.getUserInfo({
				success:res => {
					//可以将res发送给后台解码出unionId
					this.globaData.userInfo = res.userInfo
					//由于getUserInfo是网络请求,可能会在Page.onLoad之后才返回
					//所以此处加入callback以防止这种情况
					if(this.userInfoReadyCallback){
						this.userInfoReadyCallback(res)
					}
				}
			})
		}
	}
})

2.用户点击button按钮

<button open-type="getUserInfo" bindgetuserinfo="getUserInfo">获取头像昵称</button>
getLogin(){
	wx.login({
		success: async (res) => {
			if(res.code){
				//登录
				let {data} = await request('/user/wxapp/login','POST',{
					code:res.code
				})
				//data.code == 10000  没有注册
				if(data.code == 10000){
					wx.login({
						success: async (r) => {
							//注册
							let {data: re} = await request('/user/wxapp/register/complex', "POST", {
                  				code: r.code,
                  				iv: this.data.iv,
                 	 			encryptedData:this.data.encryptedData
                			})
                			this.getLogin()
						}
					})
				}else{
					wx.ssetStorageSync('token',data.data.token);
					wx.setStorageSync('uId',data.data.uid);
					this.getList()
					this.setData({
						hasUserInfo:true,
						user:data.data,
						uId:data.data.uid
					})
				}
			}else{
				console.log('登录失败' + res.errMsg);
			}
		}
	})
},
getUserInfo: async function(e) {
	this.setData({
		iv:e.detail.iv,
		 encryptedData:e.detail.encryptedData
	})
	app.globalData.userInfo = e.detail.userInfo
	if(e.detaill.userInfo){
		this.getLogin()
		this.setData({
        userInfo: e.detail.userInfo,
        detail: e.detail,
      })
	}
}


```c
data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值