Autorisation de la page Web WeChat


Autorisation de la page Web WeChat

1475981980514516.png

Si l'utilisateur accède à une page Web tierce dans le client WeChat, le compte officiel peut obtenir les informations de base de l'utilisateur via le mécanisme d'autorisation de la page Web WeChat, puis mettre en œuvre une logique métier.

Instructions sur le nom de domaine de rappel d'autorisation de page Web

1. Avant que le compte officiel WeChat ne demande l'autorisation de page Web de l'utilisateur, le développeur doit accéder à la section « Développement-Autorisations d'interface-Service de page Web-Compte de page Web-Obtention d'autorisation de page Web » sur le site officiel de la plateforme publique Dans les options de configuration des « Informations utilisateur de base », modifiez le nom de domaine de rappel d'autorisation. Veuillez noter que le nom de domaine (qui est une chaîne) est renseigné ici, pas l'URL, veuillez donc ne pas ajouter d'en-têtes de protocole tels que http:// 

2 La spécification de configuration du nom de domaine de rappel d'autorisation est le domaine complet. nom, tel qu'un nom de domaine qui nécessite une autorisation de page Web. Il s'agit de : www.qq.com Après configuration, les pages http://www.qq.com/music.html et http://www.qq.com. /login.html sous ce nom de domaine peut effectuer l'authentification OAuth2.0. Mais http://pay.qq.com, http://music.qq.com, http://qq.com ne peuvent pas effectuer l'authentification OAuth2.0

3 Si la connexion au compte officiel est autorisée à un tiers. développeur Pour gérer, vous n'avez besoin de faire aucun réglage, laissez simplement un tiers remplacer le compte officiel pour mettre en œuvre l'autorisation de la page Web

Explication sur la différence entre les deux étendues d'autorisation de page Web

1. L'autorisation de page Web initiée avec snsapi_base comme étendue est utilisée pour obtenir l'openid de l'utilisateur qui entre dans la page, et est autorisée en silence et saute 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. L'autorisation de la page Web initiée avec snsapi_userinfo comme scope est utilisée pour obtenir les informations de base de l'utilisateur. Cependant, ce type d'autorisation nécessite le consentement manuel de l'utilisateur, et puisque l'utilisateur a accepté, les informations de base de l'utilisateur peuvent être obtenues après autorisation sans y prêter attention.

3. L'"Interface d'obtention des 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 poussé l'événement après avoir suivi le message. 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.

À propos de la différence entre l'autorisation de page Web access_token et l'access_token ordinaire

1. L'autorisation de page Web WeChat est mise en œuvre via le mécanisme OAuth2.0 Une fois que l'utilisateur a autorisé le compte officiel, le compte officiel peut obtenir un appel d'interface unique pour la page Web. autorisation. Informations d'identification (autorisation de page Web access_token), via l'autorisation de page Web access_token, vous pouvez effectuer des appels d'interface post-autorisation, tels que l'obtention d'informations utilisateur de base

 ;

2. Pour les autres interfaces WeChat, vous devez obtenir l'appel access_token ordinaire via l'interface « Get access_token » dans le support de base.

À propos du mécanisme UnionID

1 Veuillez noter que l'autorisation de la page Web pour obtenir des informations utilisateur de base suit également le mécanisme UnionID. Autrement dit, si un développeur a besoin d'unifier les comptes d'utilisateurs entre plusieurs comptes officiels, ou entre des comptes officiels et des applications mobiles, il doit se rendre sur la plateforme ouverte WeChat (open.weixin.qq.com) pour lier le compte officiel avant de pouvoir utilisez le mécanisme UnionID pour répondre aux besoins ci-dessus.

2. Description du rôle du mécanisme UnionID : Si un développeur possède plusieurs applications mobiles, applications de sites Web et comptes publics, le caractère unique de l'utilisateur peut être distingué en obtenant l'unionid dans les informations de base de l'utilisateur, car le même utilisateur est ouvert au même WeChat Différentes applications de la plateforme (applications mobiles, applications de sites Web et comptes publics) ont le même unionid.

À propos de l'autorisation silencieuse dans des scénarios spéciaux

1 Comme mentionné ci-dessus, pour l'autorisation de page Web avec snsapi_base comme portée, elle est autorisée silencieusement et l'utilisateur n'en est pas conscient

2. account , si l'utilisateur accède à la page d'autorisation Web du compte officiel à partir de la session du compte officiel ou du menu personnalisé, même si la portée est snsapi_userinfo, l'autorisation est silencieuse et l'utilisateur l'ignore.

Plus précisément, le processus d'autorisation de la page Web est divisé en quatre étapes :

1. Guidez l'utilisateur pour qu'il accède à la page d'autorisation pour accepter l'autorisation et obtenir le code

2. Échangez le code pour l'autorisation de la page Web access_token (différent du access_token). dans le support de base)

3. Si nécessaire, les développeurs peuvent actualiser le access_token d'autorisation de page Web pour éviter l'expiration

4. Obtenez les informations de base de l'utilisateur via access_token d'autorisation de page Web et openid (prend en charge le mécanisme UnionID)


Étape 1. : L'utilisateur accepte l'autorisation et obtient le code

En partant du principe de s'assurer que le compte public WeChat dispose des autorisations de la 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 :

https://open.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 n'est pas accessible", veuillez vérifier si les paramètres sont correctement renseigné. Avoir les autorisations de portée d'autorisation correspondant au paramètre de portée.

Remarque spéciale : en raison du niveau de sécurité élevé des opérations d'autorisation, 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 les paramètres du lien sont dans le mauvais ordre, le la page d'autorisation ne sera pas accessible normalement

Lien de référence (veuillez ouvrir ce lien dans le client WeChat pour en faire l'expérience) la portée est snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https %3A%2F%2Fchong.qq .com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdap

ter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_bas

e&state=123# wechat_redirect Scope est snsapi_userinfo https: // ouvrir .weixin.qq.com / connect / oauth2 / autorise? Appid = wxf0e81c3bee622d60 & redirect_uri Erinfo & State = State # WeChat_Redirect


Attention particulière : le jump callback redirect_uri doit utiliser un lien https pour assurer la sécurité du code d'autorisation.

Description du paramètre

Le paramètre est-il obligatoire ? Description
appid est l'identifiant unique du compte officiel
redirect_uri est le lien de rappel redirigé après adresse d'autorisation, s'il vous plaît utilisez la paire de codes urlen Le lien est traité
response_type est le type de retour, veuillez remplir le code
scope est portée d'autorisation de l'application, snsapi_base (la page d'autorisation ne s'affiche pas, saute directement, seul l'utilisateur openid peut être obtenu), snsapi_userinfo (la page d'autorisation apparaît et le surnom, le sexe et l'emplacement peuvent être obtenus via openid.De plus, Même si l'utilisateur n'y prête pas attention, tant que l'utilisateur l'autorise, les informations peuvent être obtenues)
stateNonLe paramètre state sera inclus après redirection, les développeurs pourront le renseigner a-zA-Z0 La valeur du paramètre -9, jusqu'à 128 octets
#wechat_redirect estQue vous l'ouvriez directement ou fassiez une redirection page 302, vous devez apporter ce paramètre

L'image ci-dessous montre la page d'autorisation lorsque la portée est égale à snsapi_userinfo :

Une fois que l'utilisateur a accepté l'autorisation

Si l'utilisateur accepte l'autorisation, la page passera à redirect_uri/?code =CODE&état=ÉTAT.

Description du code : le code est utilisé comme ticket en échange d'un access_token. Le code apporté avec chaque autorisation d'utilisateur sera différent. Le code ne peut être utilisé qu'une seule fois et expirera automatiquement s'il n'est pas utilisé pendant 5 minutes.

Étape 2 : Échangez le access_token d'autorisation de page Web via le code

Tout d'abord, veuillez noter que ce qui est échangé via le code ici est un access_token d'autorisation de page Web spécial, qui est différent du access_token dans le support de base (cet access_token est utilisé pour appeler d'autres interfaces). Les comptes officiels peuvent obtenir une autorisation de page Web access_token via l'interface suivante. Si la portée de l'autorisation de page Web est snsapi_base, dans cette étape, lors de l'obtention de l'autorisation de page Web access_token, l'openid est également obtenu et le processus d'autorisation de page Web de style snsapi_base se termine ici.

Attention particulière : Le secret du compte officiel et le access_token obtenu ayant un niveau de sécurité très élevé, ils doivent uniquement être enregistrés sur le serveur et ne peuvent pas être transmis au client. Les étapes ultérieures telles que l'actualisation de access_token et l'obtention d'informations utilisateur via access_token doivent également être lancées à partir du serveur.

Méthode de demande

Après avoir obtenu le code, demandez le lien suivant pour obtenir access_token : https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

Description du paramètre

OuiLe secret d'application du fonctionnaire accountcode OuiRemplissez le paramètre code obtenu à la première étapegrant_typeOuiremplissez authorisation_code

Instructions de retour

Le paquet de données JSON renvoyé lorsqu'il est correct est le suivant :

{ "access_token": "ACCESS_TOKEN",

"expires_in": 7200,

"refresh_token": "REFRESH_TOKEN",

"openid ": "OPENID",

"scope": "SCOPE" }

Le paramètre est-il obligatoire ?
ParamètresDescription
access_tokenInterface d'autorisation de page Web appelant le bon, remarque : ce access_token est différent du access_token pris en charge par les bases
expires_inaccess_token interface appelant le temps du bon sortie, unité ( secondes) )
refresh_tokenActualisation de l'utilisateur access_token
openidIdentification unique de l'utilisateur Veuillez noter que lorsque l'utilisateur ne suit pas le compte officiel, lorsqu'il visite la page Web du compte officiel, un OpenID unique à. l'utilisateur et le compte officiel seront également générés
scopeScopes autorisés par l'utilisateur, séparés par des virgules (,)

En cas d'erreur, WeChat renvoie le paquet de données JSON comme suit (l'exemple est Code invalid error) :

{"errcode":40029,"errmsg":"invalid code"}

Étape 3 : Actualiser access_token (si nécessaire)

Étant donné que access_token a une courte période de validité, lorsque le access_token expire, vous pouvez utiliserfresh_token pour actualiser. Lefresh_token est valide pendant 30 jours. Lorsque le rafraîchissement_token expire, l'utilisateur doit le faire. réautoriser.

Méthode de demande

Après avoir obtenu le rafraîchir_token dans la deuxième étape, demandez le lien suivant pour obtenir le access_token :

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type =refresh_token&refresh_token=REFRESH_TOKEN


Le paramètre est-il obligatoire ? Description
appid est l'identifiant unique du compte officiel
grant_typeOui remplissezfresh_token
refresh_token est Remplissez le paramètre rafraîchir_token obtenu via access_token

Instructions de retour

Le paquet de données JSON renvoyé lorsqu'il est correct est le suivant :

{ "access_token": "ACCESS_TOKEN",

"expires_in": 7200,

"refresh_token": "REFRESH_TOKEN",

"open id": "OPENID",

"scope": "SCOPE" }

ParamètresDescription
access_tokenInterface d'autorisation de page Web appelant le bon, remarque : ce access_token est différent du access_token pris en charge par les bases
expires_inaccess_token interface appelant le temps du bon sortie, unité ( secondes) )
refresh_tokenActualisation de l'utilisateur access_token
openidIdentifiant unique de l'utilisateur
scopePortée autorisée de l'utilisateur, utilisez une virgule (,) pour séparer

Lorsqu'il y a une erreur, WeChat renverra le paquet de données JSON comme suit (l'exemple est une erreur de code invalide) :

{"errcode":40029,"errmsg":"invalid code"}

Étape 4 : Extraire les informations sur les utilisateurs (la portée doit être snsapi_userinfo)

Si la portée d'autorisation de la page Web est snsapi_userinfo, le développeur peut désormais extraire les informations sur l'utilisateur via access_token et openid.

Méthode de demande

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

Description du paramètre identifiant de l'utilisateur

lang

Instructions de retour

Le paquet de données JSON renvoyé lorsqu'il est correct est le suivant :

{ "openid": OPENID",

"nickname": NICKNAME,

"sex": "1",

"province ": "PROVINCE"

"ville": "VILLE",

"pays": "PAYS",

"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSY VY0ChQKkiaJSgQ1dZuTOgvLL rhJbERQQ

4eMsv84eavHiaiceqxibJxCfHe/ 46",

"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],

"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"

}

Retour à la version linguistique du pays et de la région, zh_CN simplifié, zh_TW traditionnel, en anglais
ParamètreDescription
openidL'identifiant unique de l'utilisateur
surnomPseudo de l'utilisateur
sexeLe sexe de l'utilisateur, lorsque la valeur est 1, il s'agit d'un homme. la valeur est 2 Est une femme, lorsque la valeur est 0, elle est inconnue
provinceLa province renseignée dans le profil utilisateur
villeLa ville renseignée dans le profil utilisateur ordinaire
pays Le pays, comme la Chine, est CN
headimgurlAvatar de l'utilisateur, la dernière valeur représente la taille de l'avatar carré (il y a 0, 46, 64, 96, 132 valeurs disponibles, 0 représente un 640 *Avatar de 640 carrés), cet élément est vide lorsque l'utilisateur ne possède pas d'avatar. Si l'utilisateur modifie son avatar, l'URL de l'avatar d'origine sera invalide.
privilègeInformations sur les privilèges utilisateur, tableau json, tel que l'utilisateur WeChat Woka est (chinaunicom)
unionidCe champ n'apparaîtra qu'une fois que l'utilisateur aura lié le compte officiel au compte de la plateforme ouverte WeChat.

Lorsqu'il y a une erreur, WeChat renverra le paquet de données JSON comme suit (l'exemple est openid invalide) :

{"errcode":40003,"errmsg":" invalid openid "}

Pièce jointe : Vérification des informations d'identification d'autorisation (access_token) Est-ce valide

Méthode de demande

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

Description du paramètre identification de l'utilisateur

Instructions de retour{ "errcode":0,"errmsg":"ok"} Exemple de retour JSON lorsqu'une erreur se produit : { "errcode":40003 ,"errmsg ":"openid invalide"}
Corriger le résultat de retour JSON :