Home > Article > Backend Development > WeChat public platform implements the method of obtaining user OpenID, public openid_PHP tutorial
This article describes the WeChat public platform's method of obtaining the user's OpenID. Share it with everyone for your reference. The specific analysis is as follows:
After the user clicks the WeChat custom menu view type button, the WeChat client will open the url value (i.e. web link) filled in by the developer in the button to achieve the purpose of opening the web page, but the view cannot obtain the user's openid, which is required Use WeChat's "Webpage Authorization to Obtain User Basic Information" advanced interface to obtain the user's login personal information.
Specific method:
1. Configure the web page authorization callback domain name, such as www.jb51.net
2. A third-party webpage that simulates a public account, http://www.bkjia.com/getcodeurl.php
<?php if(isset($_SESSION['user'])){ print_r($_SESSION['user']); exit; } $APPID='公众号在微信的appid'; $REDIRECT_URI='http://www.bkjia.com/callback.php'; $scope='snsapi_base'; //$scope='snsapi_userinfo';//需要授权 $url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$APPID.'&redirect_uri='.urlencode($REDIRECT_URI).'&response_type=code&scope='.$scope.'&state='.$state.'#wechat_redirect'; header("Location:".$url); ?>
3. In the bounce URL of the third-party web page, the code is first obtained from the request, and then further exchanged for openid and access_token based on the code. Then the relevant interface of WeChat can be called based on openid and access_token to query user information.
<?php //http://www.bkjia.com/callback.php $appid = "公众号在微信的appid"; $secret = "公众号在微信的app secret"; $code = $_GET["code"]; $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code'; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$get_token_url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); $res = curl_exec($ch); curl_close($ch); $json_obj = json_decode($res,true); //根据openid和access_token查询用户信息 $access_token = $json_obj['access_token']; $openid = $json_obj['openid']; $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN'; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$get_user_info_url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); $res = curl_exec($ch); curl_close($ch); //解析json $user_obj = json_decode($res,true); $_SESSION['user'] = $user_obj; print_r($user_obj); ?>
I hope this article will be helpful to everyone in developing WeChat public platform based on PHP.