WeChat enterprise account to get user information, WeChat to get user information

Source: Internet
Author: User
Tags oauth openid

Enterprise number obtains user information and user information

One of the most basic functions of business operations is to obtain the identity of a visitor. The traditional acquisition method is to provide a logon page for a visitor to log on.

When a user accesses a page in the enterprise number, he or she can obtain the account information of the user based on relevant APIs to match the user information stored on the Business Server.

Directory

1. Introduction

2. Sample Code

 

1. Introduction 1.1

To put it bluntly, Enterprise web development is mobile web development. The special point is how to obtain user identity information.

To obtain user information, follow these steps:

When you access a service page, you can obtain the user information through the OAuth interface → get userId Based on code → get information based on userId.

 

1.2 detailed process ① get code

API: Http://qydev.weixin.qq.com/wiki/index.php? Title = OAuth % E9 % AA % 8C % E8 % AF % 81% E6 % 8E % A5 % E5 % 8F % A3 #. E4.BC. 81. E4.B8.9A. E8.8E. B7.E5.8F. 96 code

Description: After the webpage passes OAuth2.0 verification, it is redirected to the original webpage and added code information after the url.

For example: Http://akmsg.com/a.html => OAhth2.0 => http://akmsg.com/a.html? Code = CODE & state = STATE

② Obtain userId Based on code

API: Http://qydev.weixin.qq.com/wiki/index.php? Title = OAuth % E9 % AA % 8C % E8 % AF % 81% E6 % 8E % A5 % E5 % 8F % A3 #. e6.A0. b9.E6.8D. AEcode. e8.8E. b7.E5.8F. 96. e6.88.90.E5.91.98. e4.BF. a1.E6.81. AF

Description: After you call this interface, you will get the userId. Note: userId is the encrypted account.

③ Obtain information based on userId

API: Http://qydev.weixin.qq.com/wiki/index.php? Title = % E7 % AE % A1 % E7 % 90% 86% E6 % 88% E5 % 90% 98 #. E8.8E. B7.E5.8F. 96. E6.88.90.E5.91.98

Description: After calling this interface, you will obtain the specific information of the Visitor registering with the enterprise number, such as name, number, mobile phone number, email address, and position.

④ Obtain logical User Information Based on Information

Description: The information obtained from the previous step can be used to match the business logic to obtain the user information in the business layer.

 

1.3 Flowchart

 

2. Sample Code 2.1 code (C #)

Logic: Asp.net determines the request sent by the client. If the request meets the rules on the enterprise number page, the enterprise number user identity authentication will be performed.

This function identifies three access requests:

1. The first access without code: OAuth Verification

2. There is code, no cookie: Get the information corresponding to the code

3. code and cookie: Verify the cookie

/// <Summary> /// Verify access /// </summary> public static void Auth (HttpContext webContext) {string requestURL = webContext. request. url. absoluteUri; try {// there are three types of user access pages: // 1. the first access, no code // 2. code, no cookie; // 3. code and cookie // 1. first visit, no code, no cookie: Jump to Oauth2.0 authentication if (string. isNullOrEmpty (webContext. request ["code"]) {string url = string. format (" https://open.weixin.qq.com/connect/oauth2/authorize?appid= {0} & redirect_uri = {1} & response_type = code & scope = snsapi_base & state = STATE # wechat_redirect ", CORPID, webContext. server. urlEncode (requestURL); webContext. response. redirect (url, false);} else if (! String. isNullOrEmpty (webContext. request ["code"]) & string. isNullOrEmpty (CookieHelper. getCookie ("WXToken") {// 2. code, no cookie: obtain userID string code = webContext according to code. request ["code"]; string userId = ""; string userInfo = ""; # region 1) Obtain userId string url = string Based on the code. format (" https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token= {0} & code = {1} ", GetAccessToken (), code); string responseText = HttpHelper. Instance. get (url);/* API: http://qydev.weixin.qq.com/wiki/index.php?title=OAuth%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3#.E6.A0.B9.E6.8D.AEcode.E8.8E.B7.E5.8F.96.E6.88.90.E5.91.98.E4.BF.A1.E6.81.AF Correct Json return example: {"UserId": "USERID", "DeviceId": "DEVICEID"} returns: {"OpenId": "OPENID ", "DeviceId": "DEVICEID"} returned Json sample: {"errcode": "40029", "errmsg": "invalid code"} */WeChatUserCodeEntity codeEn = JsonHelper. getEntity <WeChatUserCodeEntity> (responseText); if (codeEn. errcode> 0) {throw new Exception (codeEn. errmsg);} else if (string. isNullOrEmpty (codeEn. userId) {throw new Exception ("please Pay attention to the enterprise number first! ");} UserId = codeEn. UserId; # endregion # region 2) obtain user information based on userId url = string. Format (" https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token= {0} & userid = {1} ", GetAccessToken (), userId); responseText = HttpHelper. Instance. get (url);/* API: http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%88%90%E5%91%98#.E8.8E.B7.E5.8F.96.E6.88.90.E5.91.98 Correct Json return example: {"errcode": 0, "errmsg": "OK", "userid": "zhangsan", "name": "Li Si ", "department": [1, 2], "position": "back-end engineer", "mobile": "15913215421", "gender": "1", "email ": "zhangsan@gzdev.com", "weixinid": "lisifordev", "avatar ":" http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0 "," Status ": 1," extattr ": {" attrs ": [{" name ":" interests "," value ":" Travel "}, {"name": "card number", "value": "1234567234"}]} error Json return example: {"errcode": "40029", "errmsg ": "invalid code"} */WeChatUserInfoEntity userInfoEn = JsonHelper. getEntity <WeChatUserInfoEntity> (responseText); if (userInfoEn. errcode> 0) {throw new Exception (userInfoEn. errmsg);} userInfo = responseText; # endregion // 3. pass userInfo to CookieHe in cookie Lper. SetCookie ("WXToken", userInfo,-1);} else if (! String. IsNullOrEmpty (webContext. Request ["code"]) &! String. isNullOrEmpty (CookieHelper. getCookie ("WXToken") {# region 3. code, cookie: Check cookie // TODO: AES encryption can be used to store the cookie. In this example, the decryption is performed. // CookieHelper. setCookie ("WXToken", "",-1); # endregion} else {throw new Exception ("unauthorized access! ") ;}} Catch (Exception ex) {throw ex ;}}

  

2.2 runtime diagram 1) when the user has followed the access

 

2) When the user is not accessing the enterprise address book

2.3 Dmeo download (C #)

: Http://files.cnblogs.com/files/polk6/Wechat.QYH.zip

 

====================================== Series of articles ==============================================

This article: Enterprise 1.3 obtains user information

Development Article navigation

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.