이 글에서는 주로 WeChat의 PHP 버전에서 자동으로 로그인하고 닉네임을 얻는 방법을 소개하고, 필요한 친구가 WeChat 공개 플랫폼 인터페이스 호출을 위한 관련 PHP 작동 기술을 포함합니다.
WeChat은 자동으로 로그인할 수 있습니다. API 인터페이스를 통해 닉네임 획득 획득도 WeChat의 오픈 인터페이스를 통해 이루어집니다. 예를 함께 살펴보겠습니다
기록 전용: WeChat이 닉네임을 획득하고 자동으로 로그인합니다
반복 확인 후 이 방법에 결함이 있음을 발견했습니다.
WeChat에서 팔로우하지 않고 웹사이트에 들어가면 닉네임을 얻을 수 없습니다.
저의 방법으로 팔로우 후 닉네임을 얻으세요.
openid가 처음 생성되어서 아직 닉네임이 생성되지 않은 걸까요? 테스트 예정입니다.
/** * 获取当前页面完整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; }
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.
관련 권장 사항:
phpmkdir 함수를 구현하여 계층적 디렉터리를 재귀적으로 생성하는 방법
위 내용은 PHP를 사용하여 WeChat에 자동으로 로그인하고 닉네임을 얻는 방법에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!