袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

微信登录-网站内嵌二维码demo

浏览量:1539

index.php


<!DOCTYPE html>
<html>
<head>
<title>微信 登陆</title>
<meta charset="utf-8">
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
</head>
<body>
<h1>微信二维码登陆</h1>
<div id="login_container"></div>
<script type="text/javascript">
var obj = new WxLogin({
    id:"login_container", 
    appid: "wx70a2b1aa7fed4cc9", 
    scope: "snsapi_login", 
    redirect_uri:"<?=UrlEncode('main.php')?>",
    state: "<?=md5('idacker');?>",
    style: "black",
    href: ""//自定义样式css链接
});                  
</script>
</body>
</html>


main.php


<?php
session_start();
$code = isset($_GET['code']) ? $_GET['code'] : '';
$state = isset($_GET['state']) ? $_GET['state'] : '';
$_SESSION["code"] = $code;
$_SESSION["state"] = $state;
$appid = '';//
$secret = '';//
/**
//验证 非法操作,跳转
*/
if ($code!=''&&$state===md5('idacker')) {
    $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
    //echo $url;
}else{
    header("Location: http://".$_SERVER['HTTP_HOST']."/weixinsdk/index.php"); 
    //确保重定向后,后续代码不会被执行 
    die();
}
/**
* @param curlAPI 发送请求
* @param $url 设置请求
*/
function curlAPI($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //解决报错 SSL certificate problem: unable to get local issuer certificate
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    $result = json_decode(curl_exec($ch), true);
    if ($result === FALSE) {
        return "cURL Error: " . curl_error($ch);
        curl_close($ch);
        die();
    }
    curl_close($ch);
    return $result;
}
/**
* @param debugPre 调试
*/
function debugPre ($a){
    echo "<pre>";
    var_dump($a);
    echo "</pre>";
}
//尝试加密
function getAwardCheckCode() {
    $time = time();
    $key = "12345";
    $secret = md5($time.$key);
    return "&time=".$time."&secret=".$secret;
}
function get_password( $length = 8 ){
    $str = substr(md5(time()), 0, 6);
    return $str;
}
/**
//获取 access_token
*/
$outputAPI = curlAPI($url);
if (isset($outputAPI["access_token"])) {
    //存入session
    $_SESSION["access_token"] = $outputAPI['access_token'];
    $_SESSION["refresh_token"] = $outputAPI['refresh_token'];
    $_SESSION["scope"] = $outputAPI['scope'];
    $_SESSION["openid"] = $outputAPI['openid'];
    
} else{
    //debugPre($outputAPI);
}
/**
//获取 页面刷新后 refresh_token
*/
$refresh_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$_SESSION["refresh_token"];
$refresh_API = curlAPI($refresh_url);
if (isset($refresh_API["access_token"])) {
    //更新session token
    $_SESSION["access_token"] = $refresh_API['access_token'];
    $_SESSION["refresh_token"] = $refresh_API['refresh_token'];
    $_SESSION["scope"] = $refresh_API['scope'];
    $_SESSION["openid"] = $refresh_API['openid'];
}else{
    //debugPre($refresh_API);
}
/**
//验证授权凭证 access_token
*/
$verify_url = 'https://api.weixin.qq.com/sns/auth?access_token='.$_SESSION["access_token"].'&openid='.$_SESSION["openid"];
$verify_API = curlAPI($verify_url);
if ($verify_API['errmsg']==='ok') {
    /**
    //获取登陆用户个人信息
    */
    $user_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$_SESSION["access_token"].'&openid='.$_SESSION["openid"];
    $user_API = curlAPI($user_url);
    if (isset($user_API['nickname'])) {
        $openid     = $user_API['openid'];
        $nickname   = $user_API['nickname'];
        $sex        = $user_API['sex'];
        $province   = $user_API['province'];
        $city       = $user_API['city'];
        $country    = $user_API['country'];
        $headimgurl = $user_API['headimgurl'];
        $privilege  = $user_API['privilege'];
        $unionid    = $user_API['unionid'];
    }else{
        debugPre($user_API);
    }
}else{
    debugPre($verify_API);
    die();
}
?>
<html>
<head>
<title>已登录后操作</title>
<meta charset="utf-8">
</head>
<body>
<h1>您好:<?=$nickname?></h1>
<p><img src="<?=$headimgurl?>"> <?=$sex=='1'?'男':'女'?></p>
<p data-id="<?=$unionid?>">来自于:<?=$country.$province.$city?></p>
<p data-openid="<?=$openid?>"><?=$privilege?></p>
</body>
</html>


打赏