tp5 微信授权
protected $appid = '****************'; //微信 appid
protected $appsecrt = '******************'; //微信 appsecrt
//-----------静默授权 (不能获取用户的昵称、头像,要获取用户的昵称和头像使用 用户确认授权)
public function getBaseInfo()
{
//获取code
$redirect_uri = urlencode("http://www.******.com/index/index/getWxCode");//回调地址
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appid . "&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=123#wechat_redirect"; //state 可任意
$this->redirect($url, 302);// tp5的重定向方法
} public function getWxCode()
{
//获取access_token
//获取openID
$code = $_GET['code'];
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $this->appid . "&secret=" . $this->appsecrt . "&code=$code&grant_type=authorization_code";
$r = http_curl($url);
$openid = $r['openid'];
$access_token = $r['access_token'];
var_dump('access_token是:' . $access_token . '=========' . 'openid是:' . $openid);
} //-------------------------------end-----------------------------------
//-----------用户确认授权
public function getCodeUserInfo($temp)
{
//获取code
$redirect_uri = urlencode("http://zs.zs13ce.gx.cn/index/index/getWxUserInfo");//回调地址
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appid . "&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=$temp&connect_redirect=1#wechat_redirect"; //state 可任意
$this->redirect($url, 302);// tp5的重定向方法
}
public function getWxUserInfo()
{
//换取网页授权access_token
//获取openid
$code = $this->request->param('code');
$state = $this->request->param('state');
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $this->appid . "&secret=" . $this->appsecrt . "&code=" . $code . "&grant_type=authorization_code";
$rjson = http_curl($url);
$access_token = $rjson['access_token'];//得到access_token ( 网页的)
$openId = $rjson['openid'];//得到openid
$userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=" . $this->appid . "&lang=zh_CN";//获取用户信息
$result = http_curl($userInfoUrl);
// var_dump($result);//打印用户详细信息
// die;
if (empty($result)) {
echo 0;die;
}
$user = Db::name("user")->where("openid", $result["openid"])->find();
if (empty($user)) {
//如果表里没有,则插入
}
$this->_user = $user;
$this->setIsSq($user);
$this->redirect(url($state), 302);// tp5的重定向方法
}
function http_curl($url, $data=[])
{
$curl = curl_init();//初始化
curl_setopt($curl, CURLOPT_URL, $url);//设置抓取的url
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);// https请求 不验证证书和hosts
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_HEADER, 0);// 设置头文件的信息作为数据流输出 设置为1 的时候,会把HTTP信息打印出来 不要http header 加快效率
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设置获取的信息以文件流的形式返回,而不是直接输出。 如果设置是0,打印信息就是true
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data,true));
$data = curl_exec($curl);//执行命令
$result = json_decode($data, true);
if ($data == false) {
echo "Curl Error:" . curl_error($curl);
exit();
}
curl_close($curl);//关闭URL请求
return $result;
}
tp5 微信授权的更多相关文章
- 解决微信授权回调页面域名只能设置一个的问题 [php]
最终的解决方案是:https://github.com/liuyunzhuge/php_weixin_proxy,详细的介绍请往下阅读. 在做项目集成微信登录以及微信支付的时候,都需要进行用户授权.这 ...
- url带#号,微信授权,微信分享那些坑
微信授权的方法是,在项目里面配置拦截器(此处可以参考各个框架的拦截器)没有拦截器也可以,反正意思就是跳转到项目里的时候判断微信环境 如果是微信环境, 判断微信环境的方法是 var ua = windo ...
- 微信公众平台开发——微信授权登录(OAuth2.0)
1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户 ...
- 微信授权步骤与详解 -- c#篇
微信授权步骤与详解 -- c#篇 注:这里不涉及界面操作,只介绍代码操作. 1.基本原理如下: 从图上所知,第一步用户访问我们的网页,第二步我们后台跳转到微信授权页面,第三步用户点击授权,第四步微信重 ...
- [转] Android:微信授权登录与微信分享全解析
https://wohugb.gitbooks.io/wechat/content/qrconnent/refresh_token.html http://blog.csdn.net/xiong_it ...
- html 微信开发——微信授权
微信JS-SDK说明文档 链接地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 微信web开发:http: ...
- 微信授权登陆接入第三方App(步骤总结)Android
微信授权登陆接入第三方App(步骤总结)Android Android App实现第三方微信登录
- 微信授权登录(PHP)
微信授权登录(PHP) 微信授权 OAuth2.0授权 微信网页授权 主要是在项目中遇到网页授权登录这个需求,就对此做些总结记录. OAuth2.0授权 OAuth是一个开放协议,允许用户让第三方应用 ...
- NodeJs实现自定义分享功能,获取微信授权+用户信息
最近公司搞了个转盘抽奖的运营活动,入口放在了微信公众号里,好久没碰过微信了,刚拾起来瞬间感觉有点懵逼....似乎把之前的坑又都重新踩了一遍,虽然过程曲折,不过好在顺利完成了,而且印象也更加深刻了,抽时 ...
随机推荐
- [BZOJ1902]:[NOIP2004]虫食算(搜索)
题目传送门 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母. 来看一个简单的例子: 43#98650#45+8468#6633=444455069 ...
- 使用Runnable接口创建线程池
步骤: 创建线程池对象创建 Runnable 接口子类对象提交 Runnable 接口子类对象关闭线程池实例: class TaskRunnable implements Runnable{ @Ove ...
- Canvas 实现钟表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)E Eve
E: 模拟题,一开始有n个人(有男有女),对于子女来说线粒体DNA是继承母亲的.然后有m个操作(按时间顺序),一种就是给了父亲,母亲的ID,生了一个孩子(编号从n+1开始往下):还有一个就是 -x , ...
- webpack前置知识1(模块化开发)
webpack前置知识1(模块化开发) 新建 模板 小书匠 在开始对模块化开发进行讲解之前,我们需要有这么一个认识,即 在没有过多第三方干扰时,成本低收益高的事物更容易获得推广和信赖. 模块化开发就 ...
- MyRocks安装部署
参考:https://www.cnblogs.com/WonderHow/p/5621591.html CentOS 7.3 gflags:git clone https://github.com/g ...
- Latex常用公式整理
目录 常用 常用数学公式 常用希腊字母 说明:博客园中的Latex编辑是以$ latex公式 $,为边界. 1.常用 描述 Latex公式 表达式 下标 x_2 x2 上标 x^2 x2 分数 \f ...
- excel简单操作
百度网盘(npoi.dll): http://pan.baidu.com/s/14eJRw //先创建一个文件流,指向磁盘上的某个Excel文件 using (FileStream fsRead = ...
- 2、node-webkit运行web应用,node-webkit把web应用打包成桌面应用
下面我通过一个简单的demo来介绍怎么样把一个web应用打包成一个可执行文件(这里只介绍windows环境) 首先新建一个index.html文件,作为我们这个demo的入口页面,我们暂且就把这个页面 ...
- python - socket通信笔记
参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket ...