微信扫码登录注册实现
扫码登录是当下最流行也是最简便的登录方式。这里我用微信公众号来演示扫码登录的流程。

需要信息:
1.公众号的AppId 和公众号密钥AppSecret
2.公众号获取access_toke
 public function getToken(){
	
		$access_token	= S("gzh_access_token");
		if(!$access_token){
			$appid	= C('AppId');
			$secret	= C('AppSecret);
			$url	= "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
			$token = json_decode(curl_request($url,"get"),1);
			S("gzh_access_token",$token["access_token"],7100);
			$access_token	= S("gzh_access_token");
		}
		
		return $access_token;
	}
3.获取临时二维码
	public function getcode($access_token,$str){
		
		//查询字符串是否唯一
		$model = D("merchant");
		$res = $model->where("str='".$str."'")->find();
		
		$str = $this->parameter();
		
		if($res){
			$this->getcode($access_token);
		}else{
			//生成临时带参数二维码
			$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$access_token;
			$data["expire_seconds"]	= 7200;
			$data["action_name"]	= "QR_STR_SCENE";
			$data["action_info"]["scene"]["scene_str"]	= $str;
			
			$ticket = json_decode(curl_request($url,"post",json_encode($data)),1);
			$qrcoderul = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$ticket["ticket"];
			$qrcode	   = curl_request($qrcoderul,"get");
			return $qrcode;
		}
	}
//二维码参数
	public function parameter(){
		$str = $_SESSION["str"];
		if(strlen($str)<5){
			//生成随机字符串
			$str	= md5(rand(0,999999)."qiao.16166.org");
			$_SESSION["str"]	= $str;
		}
		
		return $str;
	}
前端代码:
<body style="margin: 0px;padding: 0px">
<div style="width: 100%;height: 100vh;background-image: url('https://public.16166.org/Skin/items/qbl/qbl.jpg');background-repeat: no-repeat;background-size: 100% 100%;overflow: hidden">
    <div style="background-color: white;margin-left: auto;margin-right: auto;width: 300px;height:auto;;margin-top:13vh;padding-top: 25px;padding-bottom: 25px;border-radius: 6px">
        <p style="margin: 0px;text-align: center"><strong>微信扫码登陆</strong></p>
        <div style="width: 300px;text-align: center;margin-top: 10px;margin-bottom: 10px">
            {$img}
        </div>
        <p id="strstate" style="margin: 0px;text-align: center;font-size: smaller">使用微信扫一扫登录或注册</p>
    </div>
<input type="hidden" id="str" value="{$str}" />
</div>
<script type="text/javascript" >
$(function (){
	checklogin();
});
function checklogin(){
	var url		 = "{:U('Sjmanager/Login/checklogin')}";
	var	str 	 = $("#str").val();
	var	postData = "str="+str;
	$.post(url,postData,function(jsons){
		console.log(jsons);
		if(jsons.state== "login"){
			$("#strstate").html("登录成功,请稍后...");
			setTimeout(function(){
				window.location = "{:U('Merchant/index/index')}";
			 },3000);	
		}
		if(jsons.state=="register"){
			$("#strstate").html("扫码成功,请稍后...");
			 setTimeout(function(){
				window.location = "{:U('Sjmanager/Login/register')}";
			 },3000);	
		}
		if(jsons.state=="no"){
			$("#strstate").html("扫码成功");
		        setTimeout(function(){
				 alert("您的信息审核未通过,请联系管理员");
			 },3000);	
		}
		else{
			setTimeout(function(){
				checklogin();
			},10000);
		}
	},'json');
}
</script>
</body>
                    
                
                
            
        
浙公网安备 33010602011771号