微信公众号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 组件化编程技巧
Jun 06 PHP
php引用返回与取消引用的详解
Jun 08 PHP
ueditor 1.2.6 使用方法说明
Jul 24 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
php获取网页上所有链接的方法
Apr 03 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
统计PHP目录中的文件数方法
Mar 05 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 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
Windows下的PHP5.0详解
2006/11/18 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
js实现星星海特效的示例
2020/09/28 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python实现端口复用实例代码
2014/07/03 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
python实现简单日期工具类
2019/04/24 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
商业门面租房协议书
2014/11/25 职场文书
罚站检讨书
2015/01/29 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
详解CSS3浏览器兼容
2022/12/24 HTML / CSS