根据需求,我今天完成的是微信的网页授权然后拉取用户的一些基本信息的问题。
1.修改网页授权的基本信息。打开微信公众平台。
![](https://files.jb51.cc/file_images/article/201701/2017121170559278.png?201702117610)
![](https://files.jb51.cc/file_images/article/201701/2017121170635718.png?201702117647)
在这个地方写要授权的页面的网址。
2.我这边只是测试这个功能,所以我页面直接写了个测试页面,我在要测试的这个网站的根目录新建了一个ceshi.html
然后在他的控制器里面对其进行操作。
1)首先是分享的也就是授权的网页的链接要写的正确
![](https://files.jb51.cc/file_images/article/201701/2017121170708715.png?201702117718)
然后url:
cope=snsapi_userinfo&state=1#wechat_redirect">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
我是直接在测试的那个网页(也就是进行授权)的控制器直接对其操作
![](https://files.jb51.cc/file_images/article/201701/2017121170756465.png?20170211785)
代码:
rush:
PHP;">
$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,我因为自己觉得并不需要,所以就没有写那一步。
![](https://files.jb51.cc/file_images/article/201701/2017121170843111.png?201702117854)
这边要是换取的时候有错的话,就会显示{"errcode":40029,"errmsg":"invalid code"}
3)利用openid和access_token获取用户的头像昵称等基本信息。
![](https://files.jb51.cc/file_images/article/201701/2017121170920705.png?201702117930)
代码:
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中的源代码:
rush:
PHP;">
function https_request($url,$data = null){
$curl = curl_init();
curl_s
etopt($curl,CURLOPT_URL,$url);
curl_s
etopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_s
etopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
if (!empty($data)){
curl_s
etopt($curl,CURLOPT_POST,1);
curl_s
etopt($curl,CURLOPT_POSTFIELDS,$data);
}
curl_s
etopt($curl,CURLOPT_RETURNTRANSFER,1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
这样应该没有问题了,就是授权的全部内容。
以上所述是小编给大家介绍的微信公众号OAuth2.0网页授权问题浅析,希望对大家有所帮助。程序员遇到问题都会上(编程之家jb51.cc)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。