分享

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

 米老鼠的世界 2021-01-26

《PHP应用:微信公众号OAuth2.0网页授权问题浅析》要点:
本文介绍了PHP应用:微信公众号OAuth2.0网页授权问题浅析,希望对您有用。如果有疑问,可以联系我们。

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

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

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

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

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

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

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

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

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

然后url:

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

2)使用code获取access_token

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

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

代码:

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

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

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

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

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

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

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

代码:

  1. $access_token=$userLists['access_token'];
  2. $openid=$userLists['openid'];
  3. $userClick=M('maiclub_userclick');
  4. if($userClick->where("openid = '{$openid}'")->find()){
  5. //echo 1111;
  6. }else{
  7. $urlInfo="https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid;
  8. $resltInfo=https_request($urlInfo,true);
  9. $userInfo=json_decode($resltInfo,true);
  10. $userClick->add($userInfo);
  11. }
  12. dump($userInfo);
  13. // dump($access_token);
  14. $this->display();

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

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

他在function中的源代码:

  1. function https_request($url, $data = null){
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_URL, $url);
  4. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  5. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  6. if (!empty($data)){
  7. curl_setopt($curl, CURLOPT_POST, 1);
  8. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  9. }
  10. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  11. $output = curl_exec($curl);
  12. curl_close($curl);
  13. return $output;
  14. }

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

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

转载请注明本页网址:
http://www./jiaocheng/1925.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约