uniapp H5微信授权登录
文章描述:
uniapp H5微信公众号授权登录,我们可以去微信公众号申请测试账号在本地进行测试,然后在部署到服务器上面进行访问。
微信公众平台
测试帐号申请
地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
微信扫码登录
测试号信息
appID、appsecret

JS接口安全域名
127.0.0.1

测试号二维码
微信扫描关注测试公众号

网页服务
网页账号 → 授权回调页面域名:127.0.0.1:8080

Uniapp
本地测试
template
<template>
	<view class="">
		{{code}}
	</view>
</template>script
	export default {
		data() {
			return {
				code:""
			};
		},
		created() {
			this.isWXBrowser = this.isWXBrowser();
			
			if (this.isWXBrowser) {
			    let code = this.getUrlCode("code");
					if (code) {
						console.log(code)
						
						this.code = code
						this.wxLogin(code); //后台登录
					} else {
						this.getWeChatCode(); //微信授权
				}
			}
			
			
		},
		onLoad(option) {
			
		},
		methods:{
			wxLogin(code){
				
			},
			//判断是否是微信内置的浏览器
			isWXBrowser() {
			  return (
				String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) ===
				"micromessenger"
			  );
			},
			//截取地址栏code
			getUrlCode(name) {
			  return (
				decodeURIComponent(
				  (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
					location.href
				  ) || [, ""])[1].replace(/\+/g, "%20")
				) || null
			  );
			},
			//访问微信地址,用来获取code
			getWeChatCode() {
				//处理域名
				let local = encodeURIComponent(window.location.href); //获取当前页面地址作为回调地址
				  
				let appid = 'wx01034e279fcb****'
				//let appid = '' //正式appid
				//通过微信官方接口获取code之后,会重新刷新设置的回调地址【redirect_uri】
			
				window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri="+local+"&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect"
			
				// window.location.href =
				// "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
				// appid +
				// "&redirect_uri=" +
				// local +
				// "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
			},
	
		},
		
		
	}微信开发者工具
公众号网页项目
地址栏输入:http://127.0.0.1:8080

正式上线
第一步:微信公众号 → 公众号设置
JS接口安全域名、网页授权域名里面添加域名即可,列如:api.miyil.com
第二步:把代码中的appid改为服务号appid即可
第三步:打包h5上传到服务器访问

template
<template>
	<view >
		<view class="userInfo">
			<view class="headImg"><image :src="headimgurl"></image></view>
			<view class="text">{{nickname}}</view>
		</view>
		<view class="hide">
			{{code}}
		</view>
	</view>
</template>script
	export default {
		data() {
			return {
				code:"",
				nickname:"",
				headimgurl:""
			};
		},
		created() {
			this.isWXBrowser = this.isWXBrowser();
			
			if (this.isWXBrowser) {
			    let code = this.getUrlCode("code");
					if (code) {
						//console.log(code)
						
						this.code = code
						this.wxLogin(code); //后台登录
						
					} else {
						this.getWeChatCode(); //微信授权
				}
			}
			
			
		},
		onLoad(option) {
			
		},
		methods:{
			wxLogin(code){
				//console.log(code)
				
				uni.request({
				    url: 'https://api.miyil.com/h5/api.php', //仅为示例,并非真实接口地址。
				    data: {
				        code: code
				    },
				    header: {
				        // 'custom-header': 'hello' //自定义请求头信息
				    },
				    success: (res) => {
				        console.log(res.data);
				        this.headimgurl = res.data.headimgurl
						this.nickname = res.data.nickname
				    }
				});
			},
			//判断是否是微信内置的浏览器
			isWXBrowser() {
			  return (
				String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) ===
				"micromessenger"
			  );
			},
			//截取地址栏code
			getUrlCode(name) {
			  return (
				decodeURIComponent(
				  (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
					location.href
				  ) || [, ""])[1].replace(/\+/g, "%20")
				) || null
			  );
			},
			//访问微信地址,用来获取code
			getWeChatCode() {
				//处理域名
				let local = encodeURIComponent(window.location.href); //获取当前页面地址作为回调地址
				  
				
				let appid = '' //正式appid
				//通过微信官方接口获取code之后,会重新刷新设置的回调地址【redirect_uri】
			
				window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri="+local+"&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect"
			
			},
	
		},
		
		
	}style.css
.userInfo{
	text-align: center;
	padding: 20upx 0;
}
.headImg image{
	width: 224upx;
	height: 224upx;
}
.text{
	text-align: center;
}
.hide{
	display: none;
}
PHP
    $appid = '';
    $secret = '';
    $code = $_GET["code"];
    
    $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$get_token_url);
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    $res = curl_exec($ch);
    curl_close($ch);
    //print_r($res);
    $json_obj = json_decode($res,true);
    $access_token = $json_obj['access_token'];
    //echo $access_token;
    $openid = $json_obj['openid'];
    //echo $openid;
    
    
    $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$get_user_info_url);
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    $res = curl_exec($ch);
    curl_close($ch);
    // $user_obj = json_decode($res,true);
    // print_r($user_obj);
    echo $res;
发布时间:2022/07/07 
                
            
发表评论