php微信登陆流程,thinkphp微信授权登陆具体流程~
具体流程为:1.获取code2.用code获取token3.用openid和token获取用户信息4.token7200秒后超时,当超时的时候,要进行刷新token
一、官方文档准备——微信网页授权
二、要设置JS安全域名和回调域名
三、获取codefunction getCode(){
$appid = 'xxxxxxxx';
// 回调的url
$nowurl = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$redirect_uri = urlencode($nowurl);
//跳转微信回调到redirect_uri获取code
$url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
return $url;
}
这里我是在主页做了一个登陆的按键,然后通过tp把生成的url赋值进来,当用户点击登陆的时候,就进入提示授权页面
四、获取token,当回到登陆之前的页面的时候,code参数已经经过url传入
public function index($code=0,$state=0)
{
$view = new View();
if ($code == 0 && $state == 0) {
$url = getCode();
$info ='null';
$view->assign('url',$url);
return $view->fetch('bulid');
}else{
$url = 'jacascript::void(0)';
$openid = getToken($code);
return $openid;
}
}function getToken($code){
//获取code
// appId与appSecret
$appid = 'xxxx';
$appsecret = 'xxxxxx';
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
$weixin=file_get_contents($url);//通过code换取网页授权access_token
$jsondecode=json_decode($weixin); //对JSON格式的字符串进行编码
sessionSet('access_token', $jsondecode -> access_token);
sessionSet('openid', $jsondecode -> openid);
Cookie::init(['prefix'=>'jq_','expire'=>2592000,'path'=>'/']);
Cookie::set('refresh_token',$jsondecode -> refresh_token);
return $jsondecode -> access_token;
}
这里由服务器拿着刚刚获取的code换的一个返回的对象,取出里面的openid和access_token分别做保存,我把
openid和access_token存到了session中,然后将重刷token(refresh_token)存入了cookie中,以便超时调用。
五、拉取用户信息function getUserInfo(){
$appid = 'xxxxxxx';
$token = Session::get('access_token');
$openid = Session::get('openid');
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=$token&openid=$openid&lang=zh_CN";
$weixin=file_get_contents($url);//通过code换取网页授权access_token
$jsondecode=json_decode($weixin); //对JSON格式的字符串进行编码
return $jsondecode;
}
取出session中的openid和token,从微信的API中取得用户信息对象,然后看怎么处理这个东西。
六、超时处理// 刷新token
function refresh(){
$appid = 'xxxxxx';
$refresh = Cookie::get('refresh_token','jq_');
$url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=$appid&grant_type=refresh_token&refresh_token=$refresh";
$weixin=file_get_contents($url);//通过code换取网页授权access_token
$jsondecode=json_decode($weixin); //对JSON格式的字符串进行编码
sessionSet('access_token', $jsondecode -> access_token);
sessionSet('openid', $jsondecode -> openid);
return $jsondecode -> access_token;
}
微信官方文档中有说明:refresh_token这个参数要30天才会超时,所以当需要重新获取信息的时候,可以直接拿refresh_token来换token,再进行操作。
效果图:
初生牛犊,如果有什么地方不对的请指出谢谢!
php微信登陆流程,thinkphp微信授权登陆具体流程~相关推荐
- php pc机微信扫码,ThinkPHP 微信登陆 (微信PC扫码授权登陆) php 最简单代码
ThinkPHP 微信登陆 (微信PC扫码授权登陆) php 最简单代码本主题由 隐藏人物 创建于 2016-3-28 0:15:28 http://www.thinkphp.cn/code/1556 ...
- 微信公众号网页授权登陆
之前接到需求是做公众号跳转h5的时候做一个登陆授权的这么一个功能.这个记录下来以免下次遇到忘记了 写的不是很清晰 https://mp.weixin.qq.com/ 微信公众平台网址 首先的进微信公众 ...
- 微信授权登陆接入第三方App(步骤总结)Android。
这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了. 目 ...
- 微信开放平台开发第三方授权登陆(二):PC网页端
微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...
- 微信授权登陆接入第三方App(步骤总结)Android
微信授权登陆接入第三方App(步骤总结) 这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移 ...
- 微信授权登陆介入第三方APP
这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了. 目 ...
- 微信小程序php java_PHP实现微信小程序用户授权的工具类
事先准备工作 1.申请一个小程序,申请地址:传送门 2.仔细阅读小程序的用户授权登陆官方文档:<用户授权登陆的流程> 3.仔细阅读微信用户数据解密的相关文档:<用户数据解密说明文档& ...
- 微信小程序php java_PHP实现微信小程序用户授权的工具类示例
事先准备工作 1.申请一个小程序,申请地址:传送门 2.仔细阅读小程序的用户授权登陆官方文档: <用户授权登陆的流程> 3.仔细阅读微信用户数据解密的相关文档: <用户数据解密说明文 ...
- php对接小程序获取表单,PHP实现微信小程序用户授权的工具类
事先准备工作 1.申请一个小程序,申请地址:传送门 2.仔细阅读小程序的用户授权登陆官方文档:<用户授权登陆的流程> 3.仔细阅读微信用户数据解密的相关文档:<用户数据解密说明文档& ...
- php登陆网页版微信代码,几行php代码实现微信自动注册登陆 (微信PC扫码受权登陆注册)...
最近做的一个商城项目中,要用到发货和收货人地址的功能,上面要求要用微信PC扫码授权登陆:自己试着用研究了好久写了一个,但是发现有好多兼容问题,具体实现步骤如下.微信PC扫码授权登陆 php简单示例代码 ...
最新文章
- 第 21 章 System Utilities 配置工具
- ADODB类库操作查询数据表
- 管理系统状态栏和导航栏(翻译)
- Java中重载(overload)和重写(override)
- java is alphabetic_JDK之Pattern类探索(一)
- oracle with check option 的作用
- 深入理解弹性盒布局(fiex-box)——Web前端系列自学笔记
- hdu 4442 Physical Examination (2012年金华赛区现场赛A题)
- sql java 创建数据库_java动态创建数据库(sql server)
- python文件地址拼接
- 【高等数学】高等数学基础理论归纳
- 1小时教你学会正则表达式
- 清华大学刘知远教授:如何写一篇合格的NLP论文
- kubeadm一键搭建kubernetes1.14.1高可用集群
- 计算机博士复试英语自我介绍,博士生复试自我介绍的英文
- squid不能启动问题及解决方法
- Nginx源码阅读 ---- 模块的初始化
- 计算机网络最出优秀,职业高中计算机网络案优秀教案.doc
- 利用intellij idea工具如何反编译.jar
- 公众号 多服务器配置_微信公众号的服务器配置
热门文章
- 信息搜集-敏感信息泄露
- 俄亥俄州立大学计算机硕士申请,俄亥俄州立大学计算机科学与工程理学硕士研究生申请要求及申请材料要求清单...
- iRingg for Mac(iPhone铃声制作工具)
- Duplicate Cleaner Pro v5.0.13 电脑重复文件查找清理工具
- python爬虫:xpath解析
- screen.colorDepth(色彩深度) 和 screen.pixelDepth(像素深度)
- excel取消隐藏_excel批量取消工作表隐藏,困绕我们N年的问题终于有了答案!
- python捕捉warning_Python warnings.warn方法代码示例
- 微处理器flash及ram内容详解
- python递归输出斐波那契数列_艾艾精工涨停