当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2016-01-01 15:19:06 浏览: 评论:0 

微信自动登录并获取昵称是可以通过api接口来获取的也是通过微信开放的接口来实现了,下面我们一起来看一个例子

仅记录:微信获取昵称自动登录

经过反复几次验证,发现我这个方法有缺陷:

微信内 未关注进入网站,无法获得昵称。

关注后用我这个方法可以获得昵称。

是否是因为第一次生成openid 所以还未生成昵称?待测试.

  1. /** 
  2. * 获取当前页面完整URL地址 
  3. */ 
  4. function get_url() { 
  5. $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; 
  6. $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']; 
  7.  
  8. $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : ''; 
  9. $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info); 
  10. return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url; 
  11. } 
  12.  
  13.  
  14. $wxch_config = $db -> getRow("SELECT * FROM `ecs_weixin_config` WHERE `id` = 1"); 
  15. $appid = $wxch_config['appid']; 
  16. $appsecret = $wxch_config['appsecret']; 
  17.  
  18. $APPID = $appid; 
  19. $SCRETID =$appsecret; 
  20.  
  21. if(!$_SESSION['user_id'] && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false){ 
  22.  
  23. if (!isset($_GET['code'])) 
  24. { 
  25.  
  26. $backurl = get_url(); 
  27. //$url = $jsApi->createOauthUrlForCode($backurl); 
  28. $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"; 
  29. //echo $url; 
  30. Header("Location: $url"); 
  31. }else 
  32. { 
  33. //获取code码,以获取openid 
  34. $code = $_GET['code']; 
  35.  
  36. $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$APPID."&secret=".$SCRETID."&code=".$code."&grant_type=authorization_code"; 
  37. $re = curl_get_contents1($url); 
  38. $rearr = json_decode($re,true); 
  39. $openid = $rearr['openid']; 
  40.  
  41.  
  42.  
  43.  
  44. //var_dump($rearr); 
  45. //$jsApi->setCode($code); 
  46. //$openid = $jsApi->getOpenid(); 
  47.  
  48. $user_name = $db->getOne("select uname from ecs_weixin_user where wxid = '{$openid}'"); 
  49.  
  50. if($openid && !$user_name){ //注册进入 
  51. $passw = md5('shanmao.me'.rand(1,18650144002)); 
  52. $wxch_user_sql = "INSERT INTO `ecs_weixin_user` (`wxid`,`setp`) VALUES ('$openid','3')"; 
  53. $db -> query($wxch_user_sql);  
  54. $ecs_user_id = $db -> insert_id(); 
  55. if($ecs_user_id<=0){ 
  56. exit('error get insert_id'); 
  57. } 
  58.  
  59. $url3 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$SCRETID; 
  60. $re3 = curl_get_contents1($url3); 
  61. $re3arr = json_decode($re3,true); 
  62. $token = $re3arr['access_token']; 
  63. $url2 = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$openid."&lang=zh_CN"; 
  64. $re2 = curl_get_contents1($url2);  
  65. $rearr2 = json_decode($re2,true); 
  66.  
  67. $uc_username = $rearr2['nickname']?$rearr2['nickname']: 'doubag' . $ecs_user_id; 
  68. $time = gmtime(); 
  69. $user_sql = "INSERT INTO `ecs_users` (`user_name`,`password`,`reg_time`) VALUES ('$uc_username','$passw','$time')"; 
  70. $db -> query($user_sql); 
  71. $uc_update = "UPDATE ecs_weixin_user SET `uname` = '$uc_username' WHERE `uid` = '$ecs_user_id'"; 
  72. $db -> query($uc_update);  
  73. $user->set_session($uc_username);  
  74. $user->set_cookie($uc_username,1); 
  75. update_user_info(); 
  76.  
  77. /* 
  78. $up_uid = get_affiliate(); 
  79. if($up_uid>0){  
  80. $sql = 'UPDATE ecs_users SET parent_id = ' . $up_uid . ' WHERE user_id = ' . $ecs_user_id; 
  81. $db ->query($sql); 
  82. header('Location: user.php?newuser=1'); 
  83. }*/ 
  84.  
  85. }else{ 
  86. $user->set_session($user_name);  
  87. $user->set_cookie($user_name,1); 
  88. update_user_info(); 
  89.  
  90. } 
  91.  
  92.  
  93. //setcookie("sopenid",$openid,time()+864000,'/'); 
  94. } 
  95. } 
  96. //var_dump($openid); 
  97. //phpfensi.com 
  98. function curl_get_contents1($url) { 
  99. $ch = curl_init(); 
  100. curl_setopt($ch, CURLOPT_URL, $url); 
  101. curl_setopt($ch, CURLOPT_TIMEOUT, 2); 
  102. curl_setopt($ch, CURLOPT_USERAGENT, "IE 6.0"); 
  103. curl_setopt($ch, CURLOPT_REFERER, ""); 
  104. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
  105. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  106. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  107. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
  108. $r = curl_exec($ch); 
  109. curl_close($ch); 
  110. return $r; 
  111. } 

Tags: php微信登陆 php获取昵称

分享到: