Home > Article > Backend Development > Detailed example of how to use PHP to automatically log in to WeChat and obtain nicknames
This article mainly introduces the method of automatically logging in and obtaining a nickname in the PHP version of WeChat. It involves the relevant operating skills of PHP for calling the WeChat public platform interface. Friends in need can refer to the following
WeChat automatically logs in and obtains the nickname. Nicknames can be obtained through the API interface and are also implemented through WeChat’s open interface. Let’s take a look at an example.
Record only: WeChat obtains nicknames and automatically logs in.
After After repeated verifications several times, I found that my method was flawed:
was not followed in WeChat and entered the website, so the nickname could not be obtained.
After following me, you can use my method to get a nickname.
Is it because the openid is generated for the first time so the nickname has not been generated yet? To be tested.
/** * 获取当前页面完整URL地址 */ function get_url() { $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']; $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : ''; $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info); return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url; } $wxch_config = $db -> getRow("SELECT * FROM `ecs_weixin_config` WHERE `id` = 1"); $appid = $wxch_config['appid']; $appsecret = $wxch_config['appsecret']; $APPID = $appid; $SCRETID =$appsecret; if(!$_SESSION['user_id'] && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false){ if (!isset($_GET['code'])) { $backurl = get_url(); //$url = $jsApi->createOauthUrlForCode($backurl); $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$APPID."&redirect_uri=".urlencode($backurl)."&response_type=code&scope=snsapi_base&state=123#wechat_redirect"; //echo $url; Header("Location: $url"); }else { //获取code码,以获取openid $code = $_GET['code']; $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$APPID."&secret=".$SCRETID."&code=".$code."&grant_type=authorization_code"; $re = curl_get_contents1($url); $rearr = json_decode($re,true); $openid = $rearr['openid']; //var_dump($rearr); //$jsApi->setCode($code); //$openid = $jsApi->getOpenid(); $user_name = $db->getOne("select uname from ecs_weixin_user where wxid = '{$openid}'"); if($openid && !$user_name){ //注册进入 $passw = md5('shanmao.me'.rand(1,18650144002)); $wxch_user_sql = "INSERT INTO `ecs_weixin_user` (`wxid`,`setp`) VALUES ('$openid','3')"; $db -> query($wxch_user_sql); $ecs_user_id = $db -> insert_id(); if($ecs_user_id<=0){ exit('error get insert_id'); } $url3 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$SCRETID; $re3 = curl_get_contents1($url3); $re3arr = json_decode($re3,true); $token = $re3arr['access_token']; $url2 = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$openid."&lang=zh_CN"; $re2 = curl_get_contents1($url2); $rearr2 = json_decode($re2,true); $uc_username = $rearr2['nickname']?$rearr2['nickname']: 'doubag' . $ecs_user_id; $time = gmtime(); $user_sql = "INSERT INTO `ecs_users` (`user_name`,`password`,`reg_time`) VALUES ('$uc_username','$passw','$time')"; $db -> query($user_sql); $uc_update = "UPDATE ecs_weixin_user SET `uname` = '$uc_username' WHERE `uid` = '$ecs_user_id'"; $db -> query($uc_update); $user->set_session($uc_username); $user->set_cookie($uc_username,1); update_user_info(); /* $up_uid = get_affiliate(); if($up_uid>0){ $sql = 'UPDATE ecs_users SET parent_id = ' . $up_uid . ' WHERE user_id = ' . $ecs_user_id; $db ->query($sql); header('Location: user.php?newuser=1'); }*/ }else{ $user->set_session($user_name); $user->set_cookie($user_name,1); update_user_info(); } //setcookie("sopenid",$openid,time()+864000,'/'); } } //var_dump($openid); function curl_get_contents1($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 2); curl_setopt($ch, CURLOPT_USERAGENT, "IE 6.0"); curl_setopt($ch, CURLOPT_REFERER, ""); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $r = curl_exec($ch); curl_close($ch); return $r; }
Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.
Related recommendations:
5 ways to implement recursive directories in PHP
phpFunction mkdir Method to implement recursive creation of hierarchical directories
Solution to inaccurate floating point operations under PHP
The above is the detailed content of Detailed example of how to use PHP to automatically log in to WeChat and obtain nicknames. For more information, please follow other related articles on the PHP Chinese website!