基于ThinkPHP3.2.3的微信OAuth2.0微信网页授权 微信公众号网页登录 改装

首先我参考的这位仁兄的,感谢他地址 http://blog.csdn.net/a5435431941/article/details/61615851

仁兄的Github:https://github.com/PowerDos/WeChatOAuth2.0

仁兄没有给sql,我的弄好了上传出来 地址: http://download.csdn.net/detail/qq_27229113/9914285

代码也传上来,地址:http://download.csdn.net/detail/qq_27229113/9914291

贴出我改动的部分

 //获取用户openid
    function getOpenid(){
        if(!$_GET['code']){
            //获取当前的url地址
            // $rUrl=_URL_.__ACTION__.'.html';
            $rUrl="www.ypyunedu.com/Home/Demo/index"; //改成当前的url
            $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid="._APPID_."&redirect_uri=".$rUrl."&response_type=code&scope=snsapi_base&state=12345#wechat_redirect";
            //跳转页面
            redirect($url,0);
        }else{
            $aUrl="https://api.weixin.qq.com/sns/oauth2/access_token?appid="._APPID_."&secret="._APPSECRET_."&code=".$_GET['code']."&grant_type=authorization_code";
            //获取网页授权access_token和openid等
            $data=getHttp($aUrl);
            return $data['openid'];
        }
    }


    //获取用户详细信息
    function getUserInfo(){
        if(!$_GET['code']){
            //获取当前的url地址
            // $rUrl=_URL_.__ACTION__.'.html';
             $rUrl="http://www.ypyunedu.com/Home/Demo/index";//改成当前的url
            $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid="._APPID_."&redirect_uri=".$rUrl."&response_type=code&scope=snsapi_userinfo&state=12345#wechat_redirect";
            //跳转页面
            redirect($url,0);
        }else{
            $getOpenidUrl="https://api.weixin.qq.com/sns/oauth2/access_token?appid="._APPID_."&secret="._APPSECRET_."&code=".$_GET['code']."&grant_type=authorization_code";
            //获取网页授权access_token和openid等
            $data=getHttp($getOpenidUrl);
            $getUserInfoUrl="https://api.weixin.qq.com/sns/userinfo?access_token=".$data['access_token']."&openid=".$data['openid']."&lang=zh_CN";
            //获取用户数据
            $userInfo=getHttp($getUserInfoUrl);
            //默认设置头像是132*132的
            $userInfo['headimgurl']=substr($userInfo['headimgurl'],0,strlen($userInfo['headimgurl'])-1);
            $userInfo['headimgurl']=$userInfo['headimgurl'].'132';
            $userInfo['openid']=$userInfo['openid'];
            $userInfo['city']=$userInfo['city'];
            $userInfo['province']=$userInfo['province'];
            $userInfo['country']=$userInfo['country'];
            $userInfo['userInfo']=$userInfo['userInfo'];
            $userInfo['nickname']=$userInfo['nickname'];
            $userInfo['sex']=$userInfo['sex'];
            // 将信息插入数据库
            $userInfo['addtime']=date("Y-m-d H:i:s");
            //删除language元素
            unset($userInfo['language']);
            $model=M("");
            if($model->table('wUserInfo')->data($userInfo)->add()){
                setSession($userInfo);
                session("status",null);
            }else{
                echo "验证错误";
            }
        }
    }



把仁兄的方法粘贴过来

第一步

将全部文件放在网站目录下


第二步

配置你的公众号信息

  • 进入文件./Application/Common/Conf/config.php
  • 将你的公众号相关信息写入
[php]  view plain  copy
  1. <span style="font-size:14px;"><?php  
  2. //这里填入的你域名  
  3. define("_URL_","www.baidu.com");  
  4. //这里填入你公众号的APPID  
  5. define("_APPID_","你公众号的APPID");  
  6. //这里填入你公众号的APPSECRET  
  7. define('_APPSECRET_','你公众号的APPSECRET');  
  8. return array(  
  9.     //'配置项'=>'配置值'  
  10.     'DB_TYPE'               =>  'mysql',     // 数据库类型  
  11.     'DB_HOST'               =>  '127.0.0.1'// 服务器地址  
  12.     'DB_NAME'               =>  '',          // 数据库名  
  13.     'DB_USER'               =>  '',      // 用户名  
  14.     'DB_PWD'                =>  '',          // 密码  
  15.     'DB_PORT'               =>  '3306',        // 端口  
  16.     'DB_PARAMS' => array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL) ,  
  17.     'MODULE_ALLOW_LIST'    =>    array('Home','Admin'),//模块  
  18.     'DEFAULT_MODULE'       =>    'Home',  
  19.     'URL_ROUTER_ON'   => true,   
  20.     'URL_ROUTE_RULES'=>array(  
  21.         'index$' => 'Home/Index/index'//定义路由  
  22.     )  
  23. );</span>  

第三步

新建的控制器继承OAuth2Controller类即可实现微信网页授权认证功能
OAuth2Controller类的相关代码

[php]  view plain  copy
  1. <span style="font-size:14px;"><?php  
  2. namespace Home\Controller;  
  3. use Think\Controller;  
  4. class OAuth2Controller extends Controller {  
  5.     public function _initialize(){  
  6.         //判断是否验证过  
  7.         if((session("?userOpenid")&&session("?userSex"))||(session("?userOpenid")&&session("?userNickname"))){  
  8.             //已验证过  
  9.             //如果你不需要用户绑定的话,可以跳过下面这步  
  10.             if(!session("?userID")){  
  11.                 $this->redirect('这里填入要跳转的绑定页面','',2,"<h1>请先绑定账号再使用,将自动跳转到绑定页面</h1>");  
  12.             }  
  13.         }else{  
  14.         //进入验证  
  15.         //方法放在./Application/Home/Common/function.php下  
  16.             Check();  
  17.         }  
  18.     }  
  19. }</span>  

Demo

[php]  view plain  copy
  1. <span style="font-size:14px;"><?php   
  2. namespace Home\Controller;  
  3. class DemoController extends OAuth2Controller {  
  4.     public function index(){  
  5.         $this->show("这个是测试案例");  
  6.     }  
  7. }</span>  


P.S.

相关认证代码放在目录./Application/Home/Common/function.php下(不是用TP写的小伙伴可以在这里参考下认证代码)
注意要创建相应的数据库和表。具体更改在function目录下更改getUserInfo()方法就好





评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可以吧可以吧

打赏可以获得大长腿妹子微信

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值