uniapp实现微信小程序授权(ES6类封装)

话不多说,直接讲怎么做

分三步:

第一步就是getUserInfo,获取我们的头像和昵称
第二步就是获取code,
第三步就是通过后台的接口,获取我们的openid等

我习惯将登陆这部分封装起来,定义一个类

// post请求
import {publicing} from '../api/api.js'
// 请求地址
import {wxloginurl} from '../api/request.js'
var {log} = console

class logins{
	// 构造方法执行:必须是类已经实例化
	constructor(wxuser) {
	    this.wxuser = wxuser
		log(wxuser)
	}
	
	// 先获取发起请求的必须条件
	async listing(){
		// 拿到用户头像,昵称,code
		let userdata = await this.wxlogin()
		log(userdata)
		// 请求接口:登录
		let usermen = await this.gologin(userdata)
		return usermen
	}
	
	// 拿到用户头像,昵称,code
	wxlogin(){
		let wxuser = this.wxuser
		return new Promise((resolve,reject)=>{
			if(wxuser != undefined){
				wx.login({
					success: (res) => {
						log(res)
						let data = {
							nickName:wxuser.nickName,
							avatarUrl:wxuser.avatarUrl,
							code:res.code
						}
						resolve(data)
					},
					fail:(err)=>{
						log(err)
						reject('获取code失败')
					}
				})
			}else{
				console.log('拒绝登录')
				reject('FAIL')
			}
		})		
	}
	
	// 请求接口:登录
	gologin(userdata){
		return new Promise((resolve,reject)=>{
			publicing(wxloginurl,userdata)
			.then((res)=>{
				log(res)
				if(res.data.msg == 'success'){
					// 存入本地
					resolve('SUCCESS')
					uni.setStorageSync('usermen',res.data.datas)
				}
			})
			.catch((err)=>{
				log(err)
			})
		})
	}
	
	
	
	// 获取用户信息和code
	
}

// 模块
module.exports = logins

publicing是我封装的一个专门post请求,wxloginurl是封装的请求

然后如何使用呢???

<button plain="true" open-type="getUserInfo" @getuserinfo="getUserInfo">去登录</button>

let logins = require('../../login/login.js')
var {log} = console

data(){
		return{
			wxlogin: true,
			usering:{}
		}
	},
	
// 获取头像昵称
	getUserInfo(event){
	log(event)
	let wxing = event.detail.userInfo
	// 实例化类
	const logclass = new logins(wxing)
	// 实例化类之后。可以访问类中的方法和属性
	logclass.listing()
	then((res)=>{
	log(res)
	this.ifUser()
			})
			.catch((err)=>{
			log(err)
				})
		
		},
					
// 是否已登录
	ifUser(){
		let setdata = uni.getStorageSync('usermen')
		if(!setdata){
			this.wxlogin = false
		}else{
			this.wxlogin = true
			this.usering = setdata
				}
			}	
		},

   onShow() {
		log('每次都执行')
		this.ifUser()
		}

wxlogin是为了判断它登录和不登录展示的内容不同

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值