微信公众号OAuth2.0网页授权问题浅析


Posted in PHP onJanuary 21, 2017

根据需求,我今天完成的是微信的网页授权然后拉取用户的一些基本信息的问题。

1.修改网页授权的基本信息。打开微信公众平台。

微信公众号OAuth2.0网页授权问题浅析

微信公众号OAuth2.0网页授权问题浅析

在这个地方写要授权的页面的网址。

2.我这边只是测试这个功能,所以我页面直接写了个测试页面,我在要测试的这个网站的根目录新建了一个ceshi.html

然后在他的控制器里面对其进行操作。

1)首先是分享的也就是授权的网页的链接要写的正确

微信公众号OAuth2.0网页授权问题浅析

然后url:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx444444444444&redirect_uri=http://www.erdangjiade.com/Admin/Wx/ceshi.html&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect

2)使用code获取access_token

我是直接在测试的那个网页(也就是进行授权)的控制器直接对其操作

微信公众号OAuth2.0网页授权问题浅析

代码:

$code=$_GET['code'];
dump($code);
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxd1caae7&secret=0a72c866233ab4cf6f1ad6d&code=".$code."&grant_type=authorization_code";
//var_dump($url);
$resInfo = https_request($url,true);
$userLists=json_decode($resInfo,true);
dump($userLists);

这边可以答应出我这边写的$userLists

然后如果是正确的话,就能获取access_token,因为access_token的时效性的问题,所以可以把access_token替换成refresh_token,我因为自己觉得并不需要,所以就没有写那一步。

微信公众号OAuth2.0网页授权问题浅析

这边要是换取的时候有错的话,就会显示{"errcode":40029,"errmsg":"invalid code"}

3)利用openid和access_token获取用户的头像昵称等基本信息。

微信公众号OAuth2.0网页授权问题浅析

代码:

$access_token=$userLists['access_token'];
$openid=$userLists['openid'];
$userClick=M('maiclub_userclick');
if($userClick->where("openid = '{$openid}'")->find()){
//echo 1111;
}else{
$urlInfo="https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid;
$resltInfo=https_request($urlInfo,true);
$userInfo=json_decode($resltInfo,true);
$userClick->add($userInfo);
}
dump($userInfo);
// dump($access_token);
$this->display();

dump($userInfo);就可以打印出用户的基本信息,然后只要入库就可以了。

这边还有个问题,就是我这边用到的一个函数https_request

他在function中的源代码:

function https_request($url, $data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}

这样应该没有问题了,就是授权的全部内容。

以上所述是小编给大家介绍的微信公众号OAuth2.0网页授权问题浅析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
使用php重新实现PHP脚本引擎内置函数
Mar 06 PHP
snoopy 强大的PHP采集类使用实例代码
Dec 09 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
php与Mysql的一些简单的操作
Feb 26 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
php cookie 详解使用实例
Nov 03 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
php-msf源码详解
Dec 25 PHP
TP3.2框架分页相关实现方法分析
Jun 03 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 #PHP
PHP三种方式实现链式操作详解
Jan 21 #PHP
PHP将字符串首字母大小写转换的实例
Jan 21 #PHP
thinkphp 手机号和用户名同时登录
Jan 20 #PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 #PHP
php curl常用的5个经典例子
Jan 20 #PHP
php技巧小结【推荐】
Jan 19 #PHP
You might like
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
深入浅出php socket编程
2015/05/13 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
php获取excel文件数据
2017/04/21 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
2016/06/24 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
python exit出错原因整理
2020/08/31 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
应届毕业生求职信范例分享
2013/12/17 职场文书
校长先进事迹材料
2014/02/01 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
面试通知邮件
2015/04/20 职场文书
防震减灾主题班会
2015/08/14 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis