基于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>
[php] view
plain copy
<span style="font-size:14px;"><?php
namespace Home\Controller;
class DemoController extends OAuth2Controller {
public function index(){
$this->show("这个是测试案例");
}
}</span>
相关认证代码放在目录
注意要创建相应的数据库和表。具体更改在function目录下更改
仁兄的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] viewplain 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()方法就好
相关文章推荐
- 微信网页扫码登录与微信公众号授权登录的区别
- Django微信公众号开发(一)公众号内网页授权登录后微信获取用户信息
- 微信授权登录——OAuth2.0
- 微信坑-网页授权登录errcode=48001,errmsg=api unauthorized, hints: [ req_id: Q0188s105 ]
- 基于CI框架的微信网页授权库示例
- 基于OAuth2.0的登录验证授权方式获取sessionkey
- 微信网页授权登录
- C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)
- NodeJs 开发微信公众号(四)微信网页授权
- 微信开放平台开发——网页微信扫码登录(OAuth2.0)
- 微信网页授权实现扫码登录原理
- 微信授权登录-微信公众号和PC端网站
- 【wechat】微信开发——OAuth2.0网页授权
- 基于第三方微信授权登录的iOS代码分析
- 基于Swift语言开发微信、QQ和微博的SSO授权登录代码分析
- 微信公众号 微信网页授权方法
- 微信开放平台开发——网页微信扫码登录(OAuth2.0)
- 用chrome模拟微信浏览器访问需要OAuth2.0网页授权的页面
- 夺命雷公狗---微信开发53----网页授权(oauth2.0)获取用户基本信息接口(3)实现世界留言版
- 微信公众号开发(十二)OAuth2.0网页授权