回调页面
<!DOCTYPE html>
<html lang="zxx">
<head>
<title>信息详情</title>
<!-- Meta tag Keywords -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8" />
<meta name="keywords" content="" />
<style>
.container {
text-align: center;
font-size: 17px;
}
.head {
width: 150px;
height: 150px;
}
</style>
<script>
addEventListener("load", function () {
setTimeout(hideURLbar, 0);
}, false);
function hideURLbar() {
window.scrollTo(0, 1);
}
</script>
<script>
//获取地址参数, 参数可以是中文也可以是英文
function getUrlParam(key) {
var url = window.location.search;
var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
var result = url.substr(1).match(reg);
return result ? decodeURIComponent(result[2]) : null;
}
var openid = getUrlParam("openid"); // 用户openid
var nickname = getUrlParam("nickname"); // 用户昵称
var headimgurl = getUrlParam("headimgurl"); //用户头像
var appID = "公众号AppID"; // 公众号AppID
var redirectUri = "http://授权接口地址/oauth2.php"; // 授权接口地址
var state = "project1"; // 状态标识
if(openid == null || openid == undefined || openid == ''){ // 通过判断地址参数是否有openid来确定是否要跳转授权
var strUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appID + "&redirect_uri=" + redirectUri + "&response_type=code&scope=snsapi_userinfo&state=" + state + "#wechat_redirect";
window.location.href = strUrl;
}
</script>
<!--// Meta tag Keywords -->
<!-- Custom-Files -->
<link rel="stylesheet" href="css/bootstrap.css">
<!-- Bootstrap-Core-CSS -->
<link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
<!-- Style-CSS -->
<link href="css/font-awesome.min.css" rel="stylesheet">
<!-- Font-Awesome-Icons-CSS -->
<!-- //Custom-Files -->
<!-- Web-Fonts -->
<link href="http://fonts.googleapis.com/css?family=Source+Code+Pro:200,300,400,500,600,700,900&subset=latin-ext" rel="stylesheet">
<!-- //Web-Fonts -->
</head>
<body>
<!-- contact -->
<div class="contact he-codes">
<!-- contact content -->
<div class="contact-cont pt-5 pb-xl-5 pb-3">
<div class="container">
<img src="" alt="head" id="head" />
<br/><br/>
<span>昵称:<font id="nickname"></font></span>
<br/><br/>
<span><font id="openid"></font></span>
</div>
<!-- //contact content -->
<!-- copyright -->
<div class="wthree_copy_right text-right ml-auto mt-5 mr-sm-5 mr-4">
<p class="text-li">Copyright © 2019.Company name All rights reserved.</p>
</div>
<!-- //copyright -->
</div>
<!-- //contact -->
<script>
document.getElementById("head").src = headimgurl;
document.getElementById("nickname").innerHTML = nickname;
document.getElementById("openid").innerHTML = openid;
</script>
</body>
</html>
php授权回调代码
<?php
$appId = '#'; // 公众号AppId
$appSecret = '#'; // 公众号AppSecret
$code = $_GET['code'];
$state = $_GET['state'];
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appId&secret=$appSecret&code={$code}&grant_type=authorization_code";
$a = file_get_contents($url);
switch($state){
case 'project1':
preg_match_all("/\"openid\":\"(.*?)\"/", $a, $matches, PREG_SET_ORDER);
$openid = $matches[0][1];
$json=(array)json_decode($a);
if(!isset($json['errcode'])){
$openid = $json['openid'];
$url ="https://api.weixin.qq.com/sns/userinfo?access_token=".$json['access_token']."&openid=".$json['openid'];
$a = file_get_contents($url);
$json = (array)json_decode($a);
$nickname = $json['nickname'];
$headimgurl = $json['headimgurl'];
//定义变量
$nicheng = $nickname;
$id = $openid;
//连接数据库写入操作
$dbhost = '#'; // mysql服务器主机地址
$dbuser = '#'; // mysql用户名
$dbpass = '#'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功<br />';
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
$sql = "INSERT INTO # ".
"(nicheng,openid) ".
"VALUES ".
"('$nicheng','$id')";
mysqli_select_db( $conn, '#' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('无法插入数据: ' . mysqli_error($conn));
}
echo "数据插入成功\n";
mysqli_close($conn);
header("Location:http://shouquan.lushi78778.icu/jieping.html?openid=$openid&nickname=$nickname&headimgurl=$headimgurl");
}else{
}
break;
default:
echo "ERROR";
}
?>
数据库设计
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `#`;
CREATE TABLE `#` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nicheng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`openid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;