Thinkphp 3.2 简单说明微信登录文档 [ 源码说说]

发布时间:2017年12月15日 17:28:29编辑:admin阅读(4901)评论(0)

    很多微信开发初学者为什么一窍不通,只能啃文档

    而有些人即使拼命啃文档也不一定能弄出效果呢,

    其实微信开发很简单,只不过微信开发的门槛不简单,

    微信登录还简单,但是微信支付就必须要花300大洋了。

    而且你还必须是企业资质才能做微信支付开发,个人是不能做微信支付的。只能做做简单的微信授权登录,


    我自己之前也打算弄个微信授权登录的,网页授权登录去申请了一个微信开放号,but,申请的时候明明勾选了个人,但是就是不知道为什么要我盖企业公章,我是个人啊大哥,不知道是账号问题还是个人微信开放号不能申请。。。咳咳,跑题了


    回归正题,直接上一段代码  LoginController .php

    <?php
    namespace Home\Controller;
    use Think\Controller;
    class LoginController extends Controller {
        Public function login(){
            /*
            find_model('wx_open','id=1');
            个人封装方法,
            内容
            return M('wx_open')->where('id=1')->find();
            直接把微信的openID,appsecret 等参数 存在数据库,便于后台操作控制,
            
            C("WX_PAY_CONFIG");
            把openID,appsecret http_url 参数配置在config.php里
            */
            $wx = find_model('wx_open','id=1');
            
            //$wx=C("WX_PAY_CONFIG");
            
            $appid = $wx["appid"];
            $secret = $wx["appsecret"];
            $http_url = $wx["http_url"];
            /*http%3A%2F%2F'.$http_url.'/%2Findex.php%2FHome%2FLogin%2Flogin
            $http_url  授权域名
            Home  模块名
            Login  控制器
            login  接口
            简单的理解就是当前接口路径地址,
            is_null($_GET["code"]) 判断当前路径请求有没有带code参数,没有就去请求微信,获取code并带code参数返回
            */
            if (is_null($_GET["code"])){
                $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri=http%3A%2F%2F'.$http_url.'/%2Findex.php%2FHome%2FLogin%2Flogin&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';
                header("Location:".$url);
            }else{
                //json_decode 返回数据转换成json
                //拿到code参数
                $code = $_GET["code"];
                $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
                //get_curl($get_token_url) 获取access_token
                $json_obj = json_decode($this->get_curl($get_token_url),true);
                //根据openid和access_token查询用户信息
                $access_token = $json_obj['access_token'];
                $openid = $json_obj['openid'];
                $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
                
                //解析json
                $user_obj = json_decode($this->get_curl($get_user_info_url),true);
                
                //$user_obj 到这里授权登录拿到的数据都在这里了,我这是存在cookies,哪里需要哪里获取
                //你们自己也可以不存cookies,直接差数据库openID判断存不存在,没存在就添加一条数据,存在就获取id保存,登录完成
                cookie("wx_user",$user_obj,9999999);
            }
        }
        //封装curl 请求
        public function get_curl($get_url){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $get_url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($ch);
            curl_close($ch);
            return $output;
        }
    }

    接口就这么简简单单,直接复制就可以了,,方便你(便宜你)了。


    然后就是域名的问题

    微信截图_20171211150041.png

    这个地方配置授权域名,添加的是不带任何小尾巴的域名且域名备案通过来了,小伙伴们明白了吗


    最后一点,官方文档可能好多不懂,不懂可以看我的,或者分享给别人的,或者@我。这里添加域名授权的时候回叫你下个文件,你放到你的项目下,然后域名+文件名,能访问到就可以了,

    既然网页域名授权都能添加成功了,这步肯定是已经通过来了。

    最后再说一遍,开发的时候,使用的域名一定要是备案通过来得,然后项目必须放在服务器上,不是放在开发者的本地环境,必须服务器,必须服务器,必须服务器,必须备案了的,必须备案了的,必须备案了的。

    好了,说完了,不懂得@我,留言我。谢谢

关键字微信