A-A+

微信公众号开发,TP5环境下获取微信用户用户基本信息

2019年05月29日 后端 暂无评论 阅读 873 次
守财鹿邀请码

1.相关准备

需要准备自己公众号的appId与appSecret,可在微信公众平台后台中查看

开发测试可以使用微信提供的微信公众平台测试账号来进行调试

微信测试账号登录地址为:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

使用微信扫码即可直接登录,登录后微信会提供一个测试用的appId 与 appSecret

  • 微信扫描关注一下自己的测试公众号:

  • 在下方的体验接口权限列表中配置 网页服务--网页账号--网页授权获取用户基本信息:

 

  • 配置回调页面成自己的域名地址或IP地址 (我这里填的是:web.twbweb.com):

2.代码实现

  1. public function wxLogin(){
  2.         //appId
  3.         $appId = 'your appId';
  4.         // 回调的url
  5.         $redirect_uri = urlencode('http://web.twbweb.com/index/wechat/getUserInfo');
  6.         //跳转微信回调到redirect_uri获取code
  7.         $url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appId&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
  8.         $this->redirect($url);
  9.      }
  • scope参数这里官方有一个说明:
  1. 以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
  2. 以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
  3. 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
  • 通过code获取网页授权access_token,然后通过网页授权access_token和openId即可获取到用户基本信息
  1. public function getUserInfo(){
  2.         //获取code
  3.         $code = $_GET["code"];
  4.         // appId与appSecret 
  5.         $appId = 'your appId';
  6.         $appSecret = 'your appSecret';
  7.         $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appId&secret=$appSecret&code=$code&grant_type=authorization_code";
  8.         $res = $this->sendRequest($url);
  9.         $access_token = $res["access_token"];
  10.         $openId  = $res['openid'];
  11.         $getUserInfo = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openId&lang=zh_CN";
  12.         //得到用户信息
  13.         $user_info = $this->sendRequest($getUserInfo);
  14.         dump($user_info);
  15.         //接下来的逻辑..
  16.     }
  17.      //发送请求
  18.      public function sendRequest($url){
  19.         $ch = curl_init();
  20.         curl_setopt($ch, CURLOPT_URL, $url);
  21.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  22.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  23.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  24.         $output = curl_exec($ch);
  25.         curl_close($ch);
  26.         return json_decode($output, true);
  27.     }
  • 在微信里面打开域名地址 http:/web.twbweb.com/index/wechat ,成功获取到用户信息:

 

打赏

给我留言

Copyright © WEB小工匠 保留所有权利.   渝ICP备15008469号

渝公网安备 50023602000173号

用户登录

分享到: