Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel für die Verwendung von PHP, um sich automatisch bei WeChat anzumelden und Spitznamen zu erhalten

Detailliertes Beispiel für die Verwendung von PHP, um sich automatisch bei WeChat anzumelden und Spitznamen zu erhalten

墨辰丷
墨辰丷Original
2018-06-01 10:28:532444Durchsuche

In diesem Artikel wird hauptsächlich die Methode zum automatischen Anmelden und Erhalten eines Spitznamens in der PHP-Version von WeChat vorgestellt. Dabei werden die relevanten Bedienkenntnisse von PHP zum Aufrufen der öffentlichen WeChat-Plattformschnittstelle berücksichtigt

WeChat meldet sich automatisch an und erhält einen Spitznamen. Spitznamen können über die offene Schnittstelle von WeChat abgerufen werden. Schauen wir uns gemeinsam ein Beispiel an.

Nur ​​Aufzeichnung: WeChat erhält den Spitznamen und meldet sich automatisch an

Nachdem ich mehrmals überprüft habe, stellte ich fest, dass meine Methode fehlerhaft war:

Wenn Sie mir nicht auf WeChat folgen und die Website betreten, können Sie nicht zugreifen ein Spitzname.

Nachdem Sie mir gefolgt sind, können Sie meine Methode verwenden, um Spitznamen zu erhalten.

Liegt es daran, dass die OpenID zum ersten Mal generiert wird, sodass der Spitzname noch nicht generiert wurde? Wird getestet.

/**
* 获取当前页面完整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(&#39;error get insert_id&#39;);
}
$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[&#39;access_token&#39;];
$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[&#39;nickname&#39;]?$rearr2[&#39;nickname&#39;]: &#39;doubag&#39; . $ecs_user_id;
$time = gmtime();
$user_sql = "INSERT INTO `ecs_users` (`user_name`,`password`,`reg_time`) VALUES (&#39;$uc_username&#39;,&#39;$passw&#39;,&#39;$time&#39;)";
$db -> query($user_sql);
$uc_update = "UPDATE ecs_weixin_user SET `uname` = &#39;$uc_username&#39; WHERE `uid` = &#39;$ecs_user_id&#39;";
$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 = &#39;UPDATE ecs_users SET parent_id = &#39; . $up_uid . &#39; WHERE user_id = &#39; . $ecs_user_id;
$db ->query($sql);
header(&#39;Location: user.php?newuser=1&#39;);
}*/
}else{
$user->set_session($user_name);
$user->set_cookie($user_name,1);
update_user_info();
}
//setcookie("sopenid",$openid,time()+864000,&#39;/&#39;);
}
}
//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;
}

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird .

Verwandte Empfehlungen:

5 Möglichkeiten zur Implementierung rekursiver Verzeichnisse in PHP

phpFunktion mkdir Methode zur Implementierung der rekursiven Erstellung hierarchischer Verzeichnisse

Lösung für ungenaue Gleitkommaoperationen unter PHP

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für die Verwendung von PHP, um sich automatisch bei WeChat anzumelden und Spitznamen zu erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn