首先我参考的这位仁兄的,感谢他地址 /a5435431941/article/details/61615851
仁兄的Github:/PowerDos/WeChatOAuth2.0
仁兄没有给sql,我的弄好了上传出来 地址: /detail/qq_27229113/9914285
代码也传上来,地址:/detail/qq_27229113/9914291
贴出我改动的部分
//获取用户openid
function getOpenid(){
if(!$_GET['code']){
//获取当前的url地址
// $rUrl=_URL_.__ACTION__.'.html';
$rUrl="/Home/Demo/index"; //改成当前的url
$url="https://open./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./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="/Home/Demo/index";//改成当前的url
$url="https://open./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./sns/oauth2/access_token?appid="._APPID_."&secret="._APPSECRET_."&code=".$_GET['code']."&grant_type=authorization_code";
//获取网页授权access_token和openid等
$data=getHttp($getOpenidUrl);
$getUserInfoUrl="https://api./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 <spanstyle="font-size:14px;"><?php //这里填入的你域名 define("_URL_",""); //这里填入你公众号的APPID define("_APPID_","你公众号的APPID"); //这里填入你公众号的APPSECRET define('_APPSECRET_','你公众号的APPSECRET'); returnarray( //'配置项'=>'配置值' '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 <spanstyle="font-size:14px;"><?php namespaceHome\Controller; useThink\Controller; classOAuth2ControllerextendsController{ publicfunction_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 <spanstyle="font-size:14px;"><?php namespaceHome\Controller; classDemoControllerextendsOAuth2Controller{ publicfunctionindex(){ $this->show("这个是测试案例"); } }</span>P.S.
相关认证代码放在目录./Application/Home/Common/function.php
下(不是用TP写的小伙伴可以在这里参考下认证代码)
注意要创建相应的数据库和表。具体更改在function目录下更改getUserInfo()
方法就好