加入收藏 | 设为首页 | 会员中心 | 我要投稿 汕尾站长网 (https://www.0660zz.cn/)- 研发安全、行业智能、图像分析、视频终端、数据迁移!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

微信自动登录并获取昵称的例子

发布时间:2022-07-04 09:58:41 所属栏目:PHP教程 来源:互联网
导读:微信自动登录并获取昵称是可以通过api接口来获取的也是通过微信开放的接口来实现了,下面我们一起来看一个例子 仅记录:微信获取昵称自动登录 经过反复几次验证,发现我这个方法有缺陷: 微信内 未关注进入网站,无法获得昵称。 关注后用我这个方法可以获得
  微信自动登录并获取昵称是可以通过api接口来获取的也是通过微信开放的接口来实现了,下面我们一起来看一个例子
 
  仅记录:微信获取昵称自动登录
 
  经过反复几次验证,发现我这个方法有缺陷:
 
  微信内 未关注进入网站,无法获得昵称。
 
  关注后用我这个方法可以获得昵称。
 
  是否是因为第一次生成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);
  //phpfensi.com
  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;
  }
 

(编辑:汕尾站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读