1. html页面,点击微信登录授权,弹出授权页面
<?php session_start(); ?>
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="./jquery-3.2.1.min.js"></script> <script> $(document).ready(function() { $('#wechat').click(function(){ var url = encodeURIComponent("http://weixin.xiaowei360.com/deal.php"); var appid = '公众号appid'; var state = 123;//自己设置 window.location.href="https://open.weixin.qq.com/connect/qrconnect?appid="+appid+"&redirect_uri="+url+"&response_type=code&scope=snsapi_login&state="+state+"#wechat_redirect"; }); }); </script> <title>weshare</title> </head> <body> <div> 欢迎您 <?php if($_SESSION['wxname']) echo $_SESSION['wxname'];?> </div> <div id="wechat"><h2>微信登录授权</h2></div> </body></html>
2.php处理文件,获取code,通过code获得 access_token + openid,再通过access_token + openid 获得用户所有信息,结果全部存储在$infoArray里,信息与自己数据库做匹配,若已经授权则直接登录且对应会员信息;若未授权进入登录页面,将登录授权标识openid存储在数据库,下次授权后直接登录
<?php session_start(); $code = $_GET["code"]; $state = $_GET["state"]; $appid = "公众号appid"; $secret = "秘钥"; //通过code获得 access_token + openid $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret=" . $secret . "&code=" . $code . "&grant_type=authorization_code"; $jsonResult = file_get_contents($url); $resultArray = json_decode($jsonResult, true); $access_token = $resultArray["access_token"]; $openid = trim($resultArray["openid"]); //通过access_token + openid 获得用户所有信息,结果全部存储在$infoArray里 $infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid; $infoResult = file_get_contents($infoUrl); $infoArray = json_decode($infoResult, true); $oauth_id = trim($infoArray["unionid"]); //设置数据库变量 if($oauth_id){ $db_host = '数据库对应服务器IP+端口'; $db_user = '用户名'; $db_passw = '密码'; $db_name = '数据库名'; $conn = mysqli_connect($db_host,$db_user,$db_passw,$db_name); if(!$conn){ die("错误:".mysqli_connect_error()); } mysqli_set_charset("utf8"); $sql = "select * from 表名 where 微信用户唯一标识字段 = '".$oauth_id."'"; $result = mysqli_query($conn,$sql); if($row = mysqli_fetch_assoc($result)){ $_SESSION['wxname'] = $row['username']; mysqli_close(); //已经授权直接登录状态 header("Location: http://www.baidu.com"); }else{
//未授权进入登录界面,带上标识信息,用户登录同时提交标识信息至数据库,下次授权匹配直接登录 mysqli_close(); header("Location: http://www.baidu.com/login.php?微信用户唯一标识字段=".$oauth_id); } }else{ echo "<h1>看看授权是不是有问题了</h1>"; } ?>