您的位置:首页 > 编程语言 > PHP开发

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

2017-07-28 19:02 691 查看
首先我参考的这位仁兄的,感谢他地址 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

<span style="font-size:14px;"><?php  

//这里填入的你域名  

define("_URL_","www.baidu.com");  

//这里填入你公众号的APPID  

define("_APPID_","你公众号的APPID");  

//这里填入你公众号的APPSECRET  

define('_APPSECRET_','你公众号的APPSECRET');  

return array(  

    //'配置项'=>'配置值'  

    'DB_TYPE'               =>  'mysql',     // 数据库类型  

    'DB_HOST'               =>  '127.0.0.1', // 服务器地址  

    'DB_NAME'               =>  '',          // 数据库名  

    'DB_USER'               =>  '',      // 用户名  

    'DB_PWD'                =>  '',          // 密码  

    'DB_PORT'               =>  '3306',        // 端口  

    'DB_PARAMS' => array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL) ,  

    'MODULE_ALLOW_LIST'    =>    array('Home','Admin'),//模块  

    'DEFAULT_MODULE'       =>    'Home',  

    'URL_ROUTER_ON'   => true,   

    'URL_ROUTE_RULES'=>array(  

        'index$' => 'Home/Index/index', //定义路由  

    )  

);</span>  




第三步

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

[php] view
plain copy

<span style="font-size:14px;"><?php  

namespace Home\Controller;  

use Think\Controller;  

class OAuth2Controller extends Controller {  

    public function _initialize(){  

        //判断是否验证过  

        if((session("?userOpenid")&&session("?userSex"))||(session("?userOpenid")&&session("?userNickname"))){  

            //已验证过  

            //如果你不需要用户绑定的话,可以跳过下面这步  

            if(!session("?userID")){  

                $this->redirect('这里填入要跳转的绑定页面','',2,"<h1>请先绑定账号再使用,将自动跳转到绑定页面</h1>");  

            }  

        }else{  

        //进入验证  

        //方法放在./Application/Home/Common/function.php下  

            Check();  

        }  

    }  

}</span>  


Demo

[php] view
plain copy

<span style="font-size:14px;"><?php   

namespace Home\Controller;  

class DemoController extends OAuth2Controller {  

    public function index(){  

        $this->show("这个是测试案例");  

    }  

}</span>  


P.S.

相关认证代码放在目录
./Application/Home/Common/function.php
下(不是用TP写的小伙伴可以在这里参考下认证代码)
注意要创建相应的数据库和表。具体更改在function目录下更改
getUserInfo()
方法就好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: