微信公众号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 相关文章推荐
php 无限级 SelectTree 类
May 19 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
php app支付宝回调(异步通知)详解
Jul 25 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
基于thinkphp6.0的success、error实现方法
Nov 05 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 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
第九节--绑定
2006/11/16 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
python进程与线程小结实例分析
2018/11/11 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
ES6的新特性概览
2016/03/10 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Python 初始化多维数组代码
2008/09/06 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
python实现多人聊天室
2020/03/31 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
python编写微信公众号首图思路详解
2019/12/13 Python
python装饰器代替set get方法实例
2019/12/19 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
临床医学系毕业生推荐信
2013/11/09 职场文书
外语学院毕业生的自我鉴定
2013/11/28 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
联谊活动总结范文
2015/05/09 职场文书