Vorwort
Die Autorisierung von WeChat-Webseiten ist in zwei Methoden unterteilt: snsapi_base und snsapi_userinfo. snsapi_base muss dem öffentlichen Konto folgen und die Benutzerautorisierungsschnittstelle wird beim Abrufen von Benutzerinformationen nicht angezeigt. snsapi_userinfo wird verwendet, wenn der Benutzer die Seite durchsucht, ohne dem offiziellen Konto zu folgen. Zuerst wird eine Benutzerautorisierungsschnittstelle angezeigt, und die Benutzerinformationen können erst abgerufen werden, nachdem der Benutzer sie autorisiert hat. In diesem Artikel werfen wir zunächst einen Blick auf die Implementierung von snsapi_base.
Achtung, wenn Sie in die Falle tappen
Als ich zum ersten Mal mit dem Debuggen im snsapi_base-Modus begann und auf die Seitenadresse klickte, wurde eine Aufforderung angezeigt dass der Adresslink nicht verfügbar war, müssen zunächst die grundlegenden Informationen für die Webseitenautorisierung im offiziellen Konto festgelegt werden.
Klare Unterscheidung zwischen globalem Zugriffstoken und Webseitenautorisierungs-Zugriffstoken
Beachten Sie hier, dass Sie nur den Domainnamen eingeben
, um den Effekt zu sehen
Hier sehen wir, dass wir die grundlegenden Informationen des Benutzers über oauth snsapi_base erhalten haben reicht für die allgemeine Beratungsentwicklung aus.
Siehe die Idee
1 Holen Sie sich zuerst den Code, indem Sie die Adresse zurücksenden.
2. OpenID über Code abrufen.
3. Holen Sie sich das globale access_token über appid und appsecret (dies unterscheidet sich von snsapi_userinfo).
4. Erhalten Sie Benutzerinformationen über globales access_token und openid.
Sehen Sie sich den Code an
Hier geht es ganz einfach. Die Hauptsache ist, die WeChat-Schnittstelle mithilfe der Get-Methode anzupassen. Bereiten Sie gleichzeitig Ihren Get- und Post-Vorgang vor Anforderungsmethoden und Verwendung von JSON für die Rückgabeparameter. In Entitätsklasse konvertieren.
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; } }
Zusammenfassung
Die Schnittstelle zum Abrufen von Benutzerinformationen ist hier https://api.weixin.qq.com/cgi-bin/user/info? access_token =ACCESS_TOKEN&openid=OPENID&lang=zh_CN. Es unterscheidet sich von der Webseitenautorisierung 2 zum Abrufen der Benutzeroberfläche.
Alle Codes werden auf Github hochgeladen: https://github.com /garfieldzf8/WeChat
Referenz
http://www.cnblogs.com/txw1958/p/weixin76-user-info.html
Das Obige ist der Inhalt der Entwicklung öffentlicher C#-WeChat-Webseiten (oauth2.0), um grundlegende Benutzerinformationen zu erhalten. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com).