uniapp 请求微信登录授权 判断是否授权 授权成功并登录

首先在button 上加上open-type=“getUserInfo” 来调用模拟授权框

<view >
  <button class="loginWeChatBtn"  open-type="getUserInfo" @getuserinfo="wechatLogin">微信一键登录</button>
</view>

在methods方法中获取用户名 获取性别 获取头像 获取js_code去换取后台返回的openID

	wechatLogin(){
    
    
				var that=this
				// 获取用户名  获取性别 获取头像 获取js_code去换取后台返回的openID
				uni.login({
    
    
				  provider: 'weixin',
				  success: function (loginRes) {
    
    
					let js_code=loginRes.code;//js_code可以给后台获取unionID或openID作为用户标识
					// 获取用户信息
					uni.getUserInfo({
    
    
					  provider: 'weixin',
					  success: function (infoRes) {
    
    
						//infoRes里面有用户信息需要的话可以取一下
						let username=infoRes.userInfo.nickName;//用户名
						let gender=infoRes.userInfo.gender;//用户性别
					    let avatarUrl=infoRes.userInfo.avatarUrl;//头像
					 //判断是否授权
					  uni.getSetting({
    
    
					   success(res) {
    
    
					  	console.log("授权:",res);
					     if (!res.authSetting['scope.userInfo']) {
    
    
					  		//这里调用授权
					  		console.log("当前未授权");
					     } else {
    
    
					  		//用户已经授权过了
					  		console.log("当前已授权");
					  		// 弹出正在登录的弹框
					  		uni.showLoading({
    
    
					  			mask:true,
					  			title: '正在登录···',
					  			complete:()=>{
    
    }
					  		});
					  		// 判断已授权调取接口并获取openId
					  		that.$apiReq.req({
    
     // 创建对象
					  			url: '/ui/wxutil/loginByWx', // 示例请求路径
					  		    method:"post",
					  			data : {
    
    
					  				'code':js_code,
					  			},
					  			success: (res) => {
    
    
					  			 //需要openId 可以在这里打印出来
					  				if(res.data.code==202){
    
    
					  					// 登录成功后判断是否是第一次注册  如果是弹出选择身份页面
					  					 uni.navigateTo({
    
    
					  						url: './registeredIdentity/registeredIdentity'
					  						success: res => {
    
    },
					  						fail: () => {
    
    },
					  						complete: () => {
    
    }
					  						});
					  				    }else if(res.data.code==201){
    
    
					  						 uni.switchTab({
    
    
					  								url: '../homePage/homePage',
					  								success: res => {
    
    },
					  								fail: () => {
    
    },
					  								complete: () => {
    
    }
					  						 });
					  				}
					  			},
					  		 })
					  	
					     }
					   }
					  })
					  },
					  fail:function(res){
    
    }
					})
				  },
				  fail:function(res){
    
    }
				})
			},

Guess you like

Origin blog.csdn.net/ranmoli/article/details/107080116