php 微信静默授权登录

 当用户通过微信登录你的网页时,记录用户的openid,对于一个公众号来说,每个用户openid都是唯一的。需要获取公众号的appid与appserect。需要注意的是openid放入session可能会有安全性的问题。

//判断是在微信里面打开
        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') == true) {
            if ($_SESSION["openid"]=="") {
                //配置参数的数组
                $CONF =  array(
                    '__APPID__' =>'***',
                    '__SERECT__' =>'***',
                    '__CALL_URL__' =>'http://***.net'.$_SERVER["REQUEST_URI"] //当前页地址
                );
                //没有传递code的情况下,先登录一下
                if(!isset($_GET['code']) || empty($_GET['code'])){
                    $getCodeUrl = "https://open.weixin.qq.com/connect/oauth2/authorize".
                        "?appid=" . $CONF['__APPID__'].
                        "&redirect_uri=" . $CONF['__CALL_URL__'].
                        "&response_type=code".
                        "&scope=snsapi_base". #!!!scope设置为snsapi_base !!!
                        "&connect_redirect=1".
                        "&state=1";
                    //跳转微信获取code值,去登陆
                    header('Location:' . $getCodeUrl);
                    exit;
                }else{
                    $code =	trim($_GET['code']);
                    //使用code,拼凑链接获取用户openid
                    $str = "https://api.weixin.qq.com/sns/oauth2/access_token".
                        "?appid={$CONF['__APPID__']}".
                        "&secret={$CONF['__SERECT__']}".
                        "&code={$code}".
                        "&grant_type=authorization_code";
                    //拿到openid
                    $html = json_decode(file_get_contents($str),1);
                    $_SESSION["openid"]=$html['openid'];
                }
            }
        }else{
            echo "请在微信客户端打开链接";
            exit();
        }

参考:https://blog.csdn.net/weixin_36333654/article/details/52882287?locationNum=5&fps=1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值