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

Comment implémenter la fonction de connexion et d'enregistrement automatique de l'analyse de code WeChat en PHP

墨辰丷
墨辰丷original
2018-06-01 10:43:091832parcourir

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 QR

Par 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

Obtenir la méthode UnionID<.>

public function wcallbackAction(){
$code = $_GET[&#39;code&#39;];
$state = $_GET[&#39;state&#39;];
$setting = include CONFIG_PATH . &#39;setting.php&#39;;
$appid=$setting[&#39;weixin&#39;][&#39;appid&#39;];
$appsecret=$setting[&#39;weixin&#39;][&#39;appsecret&#39;];
if (emptyempty($code)) $this->showMessage(&#39;授权失败&#39;);
try{
$token_url = &#39;https://api.weixin.qq.com/sns/oauth2/access_token?appid=&#39;.$appid.&#39;&secret=&#39;.$appsecret.&#39;&code=&#39;.$code.&#39;&grant_type=authorization_code&#39;;
$token = json_decode($this->https_request($token_url));
}catch(Exception $e)
{
print_r($e);
}
if (isset($token->errcode)) {
echo &#39;<h1>错误:</h1>&#39;.$token->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$token->errmsg;
exit;
}
$access_token_url = &#39;https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=&#39;.$appid.&#39;&grant_type=refresh_token&refresh_token=&#39;.$token->refresh_token;
//转成对象
$access_token = json_decode($this->https_request($access_token_url));
if (isset($access_token->errcode)) {
echo &#39;<h1>错误:</h1>&#39;.$access_token->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$access_token->errmsg;
exit;
}
$user_info_url = &#39;https://api.weixin.qq.com/sns/userinfo?access_token=&#39;.$access_token->access_token.&#39;&openid=&#39;.$access_token->openid.&#39;&lang=zh_CN&#39;;
//转成对象
$user_info = json_decode($this->https_request($user_info_url));
if (isset($user_info->errcode)) {
echo &#39;<h1>错误:</h1>&#39;.$user_info->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$user_info->errmsg;
exit;
}
//打印用户信息
// echo &#39;<pre class="brush:php;toolbar:false">&#39;;
// print_r($user_info);
// echo &#39;
'; //获取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


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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn