微信授权登录

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>";
        }
        
?>  
        
    

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值