Lors du développement de pages Web WeChat, de nombreux utilisateurs ont besoin d'obtenir les informations de base de l'utilisateur, telles que le pays, la province, la ville, le pseudo, etc. Ensuite, nous analyserons en détail comment les obtenir avec succès en nous basant sur les bases du langage PHP. .
Conditions nécessaires :
1) Authentification du compte public
2) Il existe une interface d'autorisation de page Web pour obtenir des informations utilisateur de base
Remarque : Récemment, un ami a déclaré que les informations sur les utilisateurs ne pouvaient pas être obtenues lors de la demande d'un compte test sur la plateforme publique. Ce sera normal si vous passez à un compte public certifié !
Si vous rencontrez également ce problème, vous pouvez essayer de le tester dans un compte public certifié ! Merci à tous pour votre soutien !
Remplissez le nom de domaine de la page de rappel d'autorisation
Connectez-vous à la plateforme publique-->Centre des développeurs-->Tableau des autorisations d'interface
Recherchez l'autorisation de la page Web pour obtenir les informations de base de l'utilisateur puis modifiez-la-->Remplissez votre nom de domaine comme suit :
Enregistrez-le !
Deux choses sur l'autorisation de page Web Explication des différences entre les deux scopes (officiel)
1 Autorisation de page Web initiée avec snsapi_base car la scope est utilisée pour obtenir le. openid de l'utilisateur qui entre dans la page, est autorisé en silence et passe automatiquement à la page de rappel. Ce que l'utilisateur perçoit, c'est qu'il accède directement à la page de rappel (souvent une page professionnelle)
2. Autorisation de la page Web initiée avec snsapi_userinfo car la portée est utilisée pour obtenir les informations de base de l'utilisateur. Cependant, ce type d'autorisation nécessite que l'utilisateur accepte manuellement, et puisque l'utilisateur a accepté, il n'est pas nécessaire d'y prêter attention et les informations de base de l'utilisateur peuvent être obtenues après autorisation.
3. L'interface « Obtenir les informations de base de l'utilisateur » dans l'interface de gestion des utilisateurs peut obtenir les informations de base de l'utilisateur en fonction de l'OpenID de l'utilisateur uniquement après que l'utilisateur a interagi avec le compte officiel ou après que l'événement a été poussé. après avoir suivi le message de l'utilisateur. Cette interface, y compris d'autres interfaces WeChat, nécessite que l'utilisateur (c'est-à-dire openid) suive le compte officiel avant de pouvoir l'appeler avec succès.
Parce que le scope a deux modes, nous les expliquerons séparément ci-dessous :
Le scope est snsapi_base, alors l'utilisateur doit suivre le compte officiel pour obtenir l'information
Créez d'abord vous-même deux fichiers : index.php et getUserInfo.php
Exemple de code
index.php est le suivant :
? //scope=snsapi_base 实例$appid='你的AppId';$redirect_uri = urlencode ( 'http://你的域名/getUserInfo.php' );$url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=1#wechat_redirect";header("Location:".$url);
getUserInfo.php est le suivant :
$appid = "你的AppId";$secret = "你的AppSecret";$code = $_GET["code"];//第一步:取全局access_token$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";$token = getJson($url);//第二步:取得openid$oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";$oauth2 = getJson($oauth2Url); //第三步:根据全局access_token和openid查询用户信息$access_token = $token["access_token"];$openid = $oauth2['openid'];$get_user_info_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";$userinfo = getJson($get_user_info_url);//打印用户信息print_r($userinfo);function getJson($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);return json_decode($output, true);}
la portée est snsapi_userinfo. Les utilisateurs peuvent obtenir des informations sans suivre le compte officiel, mais il y aura une interface sur laquelle les utilisateurs pourront cliquer. à confirmer ! C’est l’équivalent d’une autorisation de connexion !
Exemple de code
index.php est le suivant :
/scope=snsapi_userinfo实例$appid='你的AppId';$redirect_uri = urlencode ( 'http://你的域名/getUserInfo.php' );$url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";header("Location:".$url);
getUserInfo.php est le suivant :
$appid = "你的AppId";$secret = "你的AppSecret";$code = $_GET["code"];//第一步:取得openid$oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";$oauth2 = getJson($oauth2Url);//第二步:根据全局access_token和openid查询用户信息$access_token = $oauth2["access_token"];$openid = $oauth2['openid'];$get_user_info_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";$userinfo = getJson($get_user_info_url);//打印用户信息print_r($userinfo);function getJson($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);return json_decode($output, true);}
Étapes du test :
Après avoir créé les deux fichiers index.php et getUserInfo.php
Testez d'abord : la portée est snsapi_base
1) Suivez le premier compte public
2) Générez un code QR avec l'URL : http://votre nom de domaine/index.php
3) Scannez-le ! avec WeChat
Testez à nouveau : la portée est snsapi_userinfo
1) Remplacez le code
2) Ne plus suivre le compte public actuel.
3) Utilisez ensuite WeChat pour scanner le code QR que vous venez de générer
Je pense que vous maîtrisez la méthode après avoir lu ces cas. pour des informations plus intéressantes, faites attention aux autres articles connexes sur le site Web chinois de php !
Lecture connexe :
Comment PHP résout le problème du trafic important sur les sites Web et de la concurrence élevée
Quelle est la syntaxe commune d'AJAX
Principes AJAX et méthodes inter-domaines CORS
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!