公众号和小程序获取用户信息及获取手机号

这篇具有很好参考价值的文章主要介绍了公众号和小程序获取用户信息及获取手机号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

公众号的获取用户信息
前端传code,后端根据code获取用户信息
代码:

$code = $this->request->param('code');
//通过下面url获取access_t和 openid
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . getConfig('app_id') . '&secret=' . getConfig('app_secret') . '&code=' . $code . '&grant_type=authorization_code';//静默授权和非静默授权需要注意区分
$data = json_decode($this->curl($url));
if (empty($data)) {
    apiResponse('0', 'code失效');
}
$access_token = $data->access_token;
$openid = $data->openid;
$get_user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$userinfo = $this->getJson($get_user_info_url);
//userinfo 里面就是用户信息了
//引用的方法
function curl($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}
public function getJson($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    return json_decode($output, true);
}

小程序获取用户信息
前端传iv,encryptedData,code,然后后端根据code获取session_key,再利用session_key,encryptedData及iv来获取用户信息
注意:前端wx.login获取code和获取用户信息的顺序
代码:(用的easyWeChat)

	use EasyWeChat\Factory;
	$this->wx_config = [
           'app_id' => getConfig('app_id'),
           'secret' => getConfig('app_secret'),
           'response_type' => 'array',
     ];
	$iv = $this->request->post('iv');
    $encryptedData = $this->request->post('encryptedData');
    $code = $this->request->post('code');
    if (empty($iv) || empty($encryptedData) || empty($code)) {
        apiResponse('0', "参数缺失");
    }
    $app = Factory::miniProgram($this->wx_config);
    $session_keys = $app->auth->session($code);
    if (empty($session_keys['session_key'])) {
        apiResponse('0', $session_keys['errmsg']);
    }
    $session_key = $session_keys['session_key'];
    $openid = $session_keys['openid'];


    $data = $app->encryptor->decryptData($session_key, $iv, $encryptedData);
    //data就是获取到的用户信息了

小程序获取用户手机号
前端传code,后端根据code获取用户手机号
代码:文章来源地址https://www.toymoban.com/news/detail-504780.html

   $access_token = $this->get_access_token();
   $url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" . $access_token;
   $data = '{"code":"' . $params['code'] . '"}';
   $result = curl_post($url, $data);
   $result_arr = json_decode($result, true);

   if ($result_arr['errcode'] == 0) {
       apiResponse('0', '手机号获取失败');
   }
   //保存手机号
   $result = Db::name('user')->where("uid", $user_id)->update(['mobile' => $result_arr['phone_info']['purePhoneNumber']]);
//$result_arr['phone_info']['purePhoneNumber']是我想要的手机号
  #获取access_token
  public function get_access_token() {
      $app_id = getConfig('app_id');
      $secret = getConfig('app_secret');
      $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $app_id . '&secret=' . $secret;
      $result = file_get_contents($url);
      $result = json_decode($result, true); //转为数组
      return $result['access_token'];
  }
  
 function curlPost($url, $data){
        $header = array(
            'Content-Type: application/json; charset=utf-8',
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        $response = curl_exec($ch);
        curl_close($ch);
        return $response;
    }

到了这里,关于公众号和小程序获取用户信息及获取手机号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包