Maison >développement back-end >tutoriel php >Comment implémenter la fonction de connexion et d'enregistrement automatique de l'analyse de code WeChat en PHP
Cet article présente principalement la fonction de connexion et d'enregistrement automatique de l'analyse du code WeChat en PHP, et analyse l'interface de reconnaissance du code QR PHP WeChat et les compétences d'utilisation associées sous forme d'exemples. Les amis dans le besoin peuvent se référer à
Le développement WeChat est désormais une technologie de base que les programmeurs doivent maîtriser. En fait, tous ceux qui ont développé WeChat savent que l'interface WeChat est très puissante et très simple à mettre en œuvre. Nous examinons ici un exemple de connexion et d'enregistrement automatiques WeChat. 🎜>
php La portée de l'interface utilisée pour la connexion et l'enregistrement automatiques en scannant le code WeChat sur PC est snsapi_userinfo. Une connexion WeChat est une connexion autorisée par le Web, et l'autre est une connexion conjointe WeChat
Page Web. connexion autorisée : http ://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
Connexion conjointe WeChat : https://open.weixin.qq.com/cgi-bin/frame? t=home/ web_tmpl&lang=zh_CN
1. Tout d'abord, ajoutez un logo au lien WeChat pour générer un code QRPar exemple, le lien est https:/ /open.weixin.qq.com/connect /oauth2/authorize?appid='.$appid.'&redirect_uri='.$url.'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect' Nous pouvons faire toute une histoire à propos de l'état, car l'état que vous transmettez à WeChat renverra ce que
peut être utilisé comme identifiant pour le serveur et le segment WeChat :
public function creatqrAction(){ if($_GET['app']){ $wtoken=$_COOKIE['wtoken']; $postdata=$_SESSION['w_state']; if($wtoken){ $postdata=$wtoken; } include CONFIG_PATH . 'phpqrcode/'.'phpqrcode.php' $sh=$this->shar1(); $value="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx138697ef383a9167&redirect_uri=http://www.xxx.net/login/wcallback&response_type=code&scope=snsapi_userinfo&state=".$postdata."&connect_redirect=1#wechat_redirect"; $errorCorrectionLevel = "L"; $matrixPointSize = "5"; QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize); } }
À ce stade, l'état du code QR est généré comme identifiant, et le phpqrcode peut être téléchargé à la fin de l'article. De cette façon, nous définissons l'adresse de rappel http://www.xxx.net/login/wcallback
., puis nous pouvons traiter les données dans la méthode wcallback, insérer la session générée par l'utilisateur, passer à la connexion, et le côté PC peut définir le serveur de requêtes ajax pendant quelques secondes. Une fois l'état obtenu, l'ajustement est effectué. implémenté. Après le traitement dans le navigateur WeChat, la fenêtre peut être fermée. WeChat js peut réaliser :
document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { WeixinJSBridge.call('closeWindow');}, false);
Vous pouvez également autoriser et accéder à WeChat. page de suivi du compte de service après une connexion réussie :
header("Location: weixin://profile/gh_a5e1959f9a4e"); wcallback方法做处理登陆 $code = $_GET['code']; $state = $_GET['state']; $setting = include CONFIG_PATH . 'setting.php' $appid=$setting['weixin']['appid']; $appsecret=$setting['weixin']['appsecret']; if (emptyempty($code)) $this->showMessage('授权失败'); try{ $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code' $token = json_decode($this->https_request($token_url)); }catch(Exception $e) { print_r($e); } if (isset($token->errcode)) { echo '错误:'.$token->errcode; echo '错误信息:'.$token->errmsg; exit; } $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token; //转成对象 $access_token = json_decode($this->https_request($access_token_url)); if (isset($access_token->errcode)) { echo '错误:'.$access_token->errcode; echo '错误信息:'.$access_token->errmsg; exit; } $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN' //转成对象 $user_info = json_decode($this->https_request($user_info_url)); if (isset($user_info->errcode)) { echo '错误:'.$user_info->errcode; echo '错误信息:'.$user_info->errmsg; exit; } //打印用户信息 // echo '' // print_r($user_info); // echo ''
Le téléchargement de la bibliothèque de classes phpqrcode n'est pas disponible ici. Vous pouvez télécharger la recherche Baidu
. Exemple de connexion automatique au site Web de numérisation de code QR magento WeChat
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN
Regardez lors de l'appel de l'interface post-autorisation (UnionID), il n'est pas difficile de trouver qu'en remplissant l'adresse de rappel et que l'utilisateur confirme qu'il s'est connecté au PC, il faut sauter
public function wcallbackAction(){ $code = $_GET['code']; $state = $_GET['state']; $setting = include CONFIG_PATH . 'setting.php'; $appid=$setting['weixin']['appid']; $appsecret=$setting['weixin']['appsecret']; if (emptyempty($code)) $this->showMessage('授权失败'); try{ $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code'; $token = json_decode($this->https_request($token_url)); }catch(Exception $e) { print_r($e); } if (isset($token->errcode)) { echo '<h1>错误:</h1>'.$token->errcode; echo '<br/><h2>错误信息:</h2>'.$token->errmsg; exit; } $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token; //转成对象 $access_token = json_decode($this->https_request($access_token_url)); if (isset($access_token->errcode)) { echo '<h1>错误:</h1>'.$access_token->errcode; echo '<br/><h2>错误信息:</h2>'.$access_token->errmsg; exit; } $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN'; //转成对象 $user_info = json_decode($this->https_request($user_info_url)); if (isset($user_info->errcode)) { echo '<h1>错误:</h1>'.$user_info->errcode; echo '<br/><h2>错误信息:</h2>'.$user_info->errmsg; exit; } //打印用户信息 // echo '<pre class="brush:php;toolbar:false">'; // print_r($user_info); // echo ''; //获取unionid $uid=$user_info->unionid; } //用户操作处理 分为再次登录和第一次登陆 $sql="select h_user_id from dtb_user_binded as t1 left join dtb_user_weixin as t2 on t1.u_id=t2.id where t1.u_type='". User::$arrUtype['weixin_num_t']."' and t2.openid='$user_info->unionid'"; $h_user_id = Core_Db::getOne($sql); if(!emptyempty($h_user_id)){//该weixin号再次登录 }{//该weixin号第一次登录 }Résumé : ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il pourra être utile à l'étude de chacun . Recommandations associées :
Explication détaillée du cryptage et du déchiffrement des données mis en œuvre par la fonction de cryptage symétrique PHP
Principe et mise en œuvre de Technologie de reconnaissance d'image PHP
PATH_SEPARATOR détermine l'instance actuelle du type de système de serveur
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!