Avant-propos
L'autorisation des pages Web WeChat est divisée en deux méthodes : snsapi_base et snsapi_userinfo. snsapi_base doit suivre le compte public et l'interface d'autorisation utilisateur ne s'affichera pas lors de l'obtention des informations utilisateur. snsapi_userinfo est utilisé lorsque l'utilisateur parcourt la page sans suivre le compte officiel. Une interface d'autorisation utilisateur apparaîtra en premier et les informations utilisateur ne pourront être obtenues qu'après que l'utilisateur l'aura autorisé. Dans cet article, nous examinons d'abord l'implémentation de snsapi_base.
Attention si vous marchez sur le piège
Quand j'ai commencé le débogage en mode snsapi_base, lorsque j'ai cliqué sur l'adresse de la page, cela m'a demandé que le lien d'adresse n'est pas disponible et que l'autorisation de la page Web doit être effectuée en premier. Définissez les informations de base pour l'autorisation de la page Web dans le compte officiel, c'est-à-dire définissez le nom de domaine.
Distinguer clairement le access_token global et le access_token d'autorisation de page Web
Notez ici que vous ne remplissez que le nom de domaine
pour voir l'effet
Ici nous voyons que nous avons obtenu les informations de base de l'utilisateur via oauth snsapi_base, qui est suffisant pour le développement général du conseil.
Voir l'idée
1 Obtenez d'abord le code en renvoyant l'adresse.
2. Obtenez openid via le code.
3. Obtenez le access_token global via appid et appsecret (c'est différent de snsapi_userinfo).
4. Obtenez des informations sur les utilisateurs via global access_token et openid.
Regardez le code
C'est simple ici L'essentiel est d'ajuster l'interface WeChat en utilisant la méthode get En même temps, préparez votre get et votre publication. méthodes de requête et utilisez json pour les paramètres de retour Convertir en classe d’entité.
public ActionResult OAuthSnsApiBase() { string code = Request.QueryString["code"]; try { if (!string.IsNullOrEmpty(code)) { OAuthToken oauthToken = HttpUtility.Get<OAuthToken> (string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appID, appsecret, code)); string accesstoken = string.Empty; AccessToken token = HttpUtility.Get<AccessToken>(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appID,appsecret)); if (token != null && !string.IsNullOrEmpty(token.access_token)) { accesstoken = token.access_token; } if (oauthToken != null && !string.IsNullOrEmpty(oauthToken.openid)) { OAuthUserInfo userInfo = HttpUtility.Get<OAuthUserInfo>(string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", accesstoken, oauthToken.openid)); if (userInfo != null) { ViewData["headImage"] = userInfo.headimgurl; ViewData["openid"] = userInfo.openid; ViewData["nickName"] = userInfo.nickname; if (userInfo.sex == 0) { ViewData["sex"] = "未知"; } else if (userInfo.sex == 1) { ViewData["sex"] = "男"; } else { ViewData["sex"] = "女"; } ViewData["province"] = userInfo.province; ViewData["city"] = userInfo.city; } else { } } else { } } else { return Redirect(string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=123456 #wechat_redirect", appID,"http://"+Request.Url.Host + Url.Action("OAuthSnsApiBase"))); } } catch (Exception ex) { ViewData["errmsg"] = ex.Message; } return View(); }
public class OAuthToken { public string access_token { get; set; } public int expires_in { get; set; } public string refresh_token { get; set; } public string openid { get; set; } public string scope { get; set; } } public class AccessToken { public string access_token { get; set; } public int expires_in { get; set; } }public class OAuthUserInfo { public string openid { get; set; } public string nickname { get; set; } public int sex { get; set; } public string province { get; set; } public string city { get; set; } public string country { get; set; } public string headimgurl { get; set; } public string privilege { get; set; } public string unionid { get; set; } }
Résumé
L'interface pour obtenir des informations sur l'utilisateur ici est https://api.weixin.qq.com/cgi-bin/user/info? access_token =ACCESS_TOKEN&openid=OPENID&lang=zh_CN. Elle est différente de l'autorisation de page Web 2 pour obtenir l'interface utilisateur.
Tous les codes sont téléchargés sur github : https://github.com /garfieldzf8/WeChat
Référence
http://www.cnblogs.com/txw1958/p/weixin76-user-info.html
Ce qui précède est le contenu du développement du compte public C# WeChat - autorisation de page Web (oauth2.0) pour obtenir des informations de base sur l'utilisateur. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !