• 网站实现微信扫码登录 php


    微信开放平台账号一个,必须是商户,不然你也开不了

    1.在开放平台创建应用,并设置回调地址(域名即可)

    2.生成二维码,前端代码,用户扫码后会给你的回调地址发送code

       <span id="login_container"></span>
        <script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
        <script> var obj = new WxLogin({
            id: "login_container",
            appid: "appid",你的appid
            scope: "snsapi_login",
            redirect_uri: encodeURIComponent("你的回调地址(域名必须和你在开放平台的一致)"), state: Math.ceil(Math.random()*1000),
            style: "black",
            href: ""});
        </script>

    3.根据code获取  access_token 和 openid ,再用他们获取用户信息 代码如下

     public function login(){
            $code = input('code');
            $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid= 你的appid &secret= 你的AppSecret &code=".$code."&grant_type=authorization_code";
    
            $access_token = $this->curl_get($url);
    
    
            if (!$access_token || isset($access_token['errcode'])){
                return json(['code'=>0,'message'=>'登录失败']);
            }
    
            $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token['access_token']."&openid=".$access_token['openid'];
    
            $user = $this->curl_get($url);
    
            if (!$user){
                return json(['code'=>0,'message'=>'登录失败']);
            }
            var_dump($user);
    
    //        ["openid"]=> string(28) ""
    //        ["nickname"]=> string(1) "" 普通用户昵称
    //        ["sex"]=> int(1)  普通用户性别,1为男性,2为女性
    //        ["language"]=> string(5) "zh_CN"
    //        ["city"]=> string(0) ""  普通用户个人资料填写的城市
    //        ["province"]=> string(0) ""    普通用户个人资料填写的省份
    //        ["country"]=> string(2) "CN"  国家,如中国为CN
    //        ["headimgurl"]=> string(128) ""  头像
    //        ["privilege"]=> array(0) { }  用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
    //        ["unionid"]=> string(28) ""   用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。
    
        }        
    
        protected function curl_get($url){
    
            $header = array(
                'Accept: application/json',
            );
            $curl = curl_init();
    
            //设置抓取的url
            curl_setopt($curl, CURLOPT_URL, $url);
    
            //设置头文件的信息作为数据流输出
            curl_setopt($curl, CURLOPT_HEADER, 0);
    
            // 超时设置,以秒为单位
            curl_setopt($curl, CURLOPT_TIMEOUT, 1);
    
            // 超时设置,以毫秒为单位
            // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
    
            // 设置请求头
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    
            //设置获取的信息以文件流的形式返回,而不是直接输出。
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    
            //执行命令
            $data = curl_exec($curl);
    
            // 显示错误信息
            if (curl_error($curl)) {
                return false;
            } else {
                // 打印返回的内容
                return json_decode($data,true);
            }
        }

    参考文章 :https://www.jianshu.com/p/070586d73eba

  • 相关阅读:
    南阳118--修路方案(次小生成树)
    Poj3026--Borg Maze(Bfs+Prime)
    sql常识- UNIQUE
    sql常识-FULL JOIN
    sql常识-RIGHT JOIN
    sql常识-LEFT JOIN
    sql常识-INNER JOIN
    sql常识-Join
    sql常识-Alias
    sql常识-BETWEEN 操作符
  • 原文地址:https://www.cnblogs.com/junyi-bk/p/13468278.html
Copyright © 2020-2023  润新知