Maison  >  Article  >  Applet WeChat  >  Comment obtenir des informations utilisateur via l'autorisation d'une page Web

Comment obtenir des informations utilisateur via l'autorisation d'une page Web

Y2J
Y2Joriginal
2017-05-11 13:02:322196parcourir

Les étapes pour obtenir les informations de l'utilisateur sont les suivantes :

1 Étape 1 : L'utilisateur s'engage à autoriser et obtenir le code
2 Étape 2 : Échanger le code pour l'autorisation de la page Web access_token
3 Étape 3 : Actualisez access_token (si nécessaire)
4 Étape 4 : Extrayez les informations utilisateur (besoin d'avoir la portée snsapi_userinfo)

1 Obtenez le code

Assurez-vous que le public WeChat le compte a une portée d'autorisation (paramètre scope) (une fois que le compte de service a obtenu l'interface avancée , il aura snsapi_base et snsapi_userinfo dans le paramètre scope par défaut), guidez les abonnés pour ouvrir la page suivante :

ouvrez .weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

S'il vous demande "Le lien est inaccessible ", veuillez vérifier si les paramètres sont mal renseignés, s'il dispose de l'autorisation de portée d'autorisation correspondant au paramètre de portée.

Remarque spéciale : étant donné que l'opération d'autorisation sécurité est de haut niveau, lors du lancement d'une demande d'autorisation, WeChat effectuera régulièrement une vérification de correspondance forte sur le lien d'autorisation si la commande. des paramètres du lien est Non, la page d'autorisation ne sera pas accessible normalement

Parmi eux :

AppID - l'identifiant unique du compte officiel
REDIRECT_URI - jump url
SCOPE - la valeur est snsapi_base (pas la page d'autorisation apparaît et saute directement. Vous ne pouvez obtenir que l'openid de l'utilisateur) ou snsapi_userinfo (la page d'autorisation apparaît. Vous pouvez obtenir le surnom, le sexe et l'emplacement via openid . De plus, même si vous n'y prêtez pas attention, tant que l'utilisateur l'autorise, vous pouvez également l'obtenir Informations)
STATE - Les développeurs peuvent personnaliser la valeur du paramètre a-zA-Z0-9

<.>2 Échangez le code pour l'autorisation de la page Web access_token

Si l'utilisateur accepte l'autorisation, la page passera à redirect_uri/?code=CODE&state=STATE.

state est le paramètre STATE passé tel qu'il est ci-dessus

Code d'implémentation :

 <code class="hljs php">$code = I(&#39;get.code&#39;);if (empty($code)) {   //todo 非微信访问   exit(&#39;</code>&#39;); }
else
{ //授权后操作 }
Ici, nous pouvons obtenir le code pour l'acquisition ultérieure d'access_token.

Après avoir obtenu le code, demandez le lien suivant pour obtenir le access_token :

api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

appid - l'identifiant unique du compte officiel

secret - key
code - le code renvoyé ci-dessus
grant_type - la valeur est authorisation_code

Code d'implémentation :

 <code class="hljs bash">$url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);$str = 
file_get_contents
($url);$str = 
json
_decode($str, true);$access_token = $str[&#39;access_token&#39;];</code>
Ici, access_token peut être

mis en cache pour éviter l'acquisition fréquente de code d'implémentation. Prenez le framework TP
comme exemple :

 <code class="hljs php">$access_token = S(&#39;access_token&#39;);if (empty($access_token)) {  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);  $str = file_get_contents($url);  $str = json_decode($str, true);  $access_token = $str[&#39;access_token&#39;];  S(&#39;access_token&#39;, $access_token, 3600);}</code>
. Après avoir obtenu access_token, l'openid (identifiant unique de l'utilisateur) sera également renvoyé. Le document officiel WeChat explique : l'identifiant unique de l'utilisateur. Veuillez noter que lorsque l'utilisateur ne suit pas le compte officiel et visite la page Web du compte officiel, un unique. L'utilisateur et le compte officiel seront également générés. OpenID


openid identifie de manière unique un utilisateur WeChat. Si l'utilisateur ne se connecte pas pour la première fois, après avoir obtenu l'openid, il peut

interroger <.> s'il y a un utilisateur lié à cet openid dans la base de données, puis il n'est pas nécessaire de ré-obtenir les données utilisateur, obtenez directement le paramètre user_id de la base de données session, connectez-vous directement pour accéder à 3 Ignorez la troisième étape, n'obtenez à nouveau le access_token que lorsque nécessaire

4 Extrayez les informations utilisateur (besoin d'avoir la portée snsapi_userinfo)

Si la base de données n'est pas liée à cet identifiant WeChat utilisateur, cela équivaut à la première visite et à la première connexion de l'utilisateur, puis la quatrième étape est utilisée pour obtenir les informations de l'utilisateur (après l'autorisation de l'utilisateur. Dans ce cas, la portée de l'autorisation de la page Web est snsapi_userinfo, le développeur peut alors extraire les informations de l'utilisateur via access_token et openid. ), puis créez un utilisateur en arrière-plan et liez cet utilisateur WeChat (via openid)

Méthode de demande

http : GET (veuillez utiliser le protocole https) api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID& lang
=zh_CN

access_token - le access_token obtenu ci-dessusopenid - l'identifiant unique du compte public

Code d'implémentation :

Ce qui précède sont les étapes spécifiques permettant au compte officiel WeChat d'obtenir des informations sur l'utilisateur.

[Recommandations associées]
 <code class="hljs php">$access_token = S(&#39;access_token&#39;);if (empty($access_token)) {  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);  $str = file_get_contents($url);  $str = json_decode($str, true);  $access_token = $str[&#39;access_token&#39;];  S(&#39;access_token&#39;, $access_token, 3600);}</code>

1.

Téléchargement du code source de la plateforme de compte public WeChat

2 Code source du robot Weizhichuang T+ WeChat

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