หลังจากที่ผู้ติดตามโต้ตอบกับบัญชีอย่างเป็นทางการบัญชีอย่างเป็นทางการสามารถรับ OpenID ต่อไปนี้ (บัญชี WeChat ที่เข้ารหัสผู้ใช้แต่ละคนสำหรับแต่ละบัญชีอย่างเป็นทางการนั้นไม่ซ้ำกันสำหรับบัญชีอย่างเป็นทางการที่แตกต่างกัน
บัญชีอย่างเป็นทางการสามารถรับข้อมูลผู้ใช้พื้นฐานตาม OpenID ผ่านอินเทอร์เฟซนี้รวมถึงชื่อเล่น, อวตาร, เพศ, เมือง, ภาษาและเวลาในการติดตาม
นักพัฒนาสามารถรับข้อมูลผู้ใช้พื้นฐานผ่าน OpenID โปรดใช้โปรโตคอล HTTPS
เราสามารถดูเอกสารอย่างเป็นทางการ: รับข้อมูลพื้นฐานเกี่ยวกับผู้ใช้
คำอธิบายคำขอการโทรแบบอินเตอร์เฟส
วิธีการร้องขอ http: รับ
https://api.weixin.qq.com/cgi-bin/user/info?access_token=access_token&openid=openid&lang=zh_cn
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | จำเป็นหรือไม่ | อธิบาย |
|---|---|---|
| access_token | ใช่ | การโทรหาข้อมูลรับรองอินเตอร์เฟส |
| แบบเปิดกว้าง | ใช่ | ตัวตนของผู้ใช้ทั่วไปนั้นไม่ซ้ำกับบัญชีอย่างเป็นทางการปัจจุบัน |
| หรั่ง | เลขที่ | กลับไปที่ประเทศและภาษาภาษาภูมิภาค zh_cn ภาษาจีนง่าย ๆ zh_tw จีนดั้งเดิม en English |
กลับไปที่คำอธิบาย
ภายใต้สถานการณ์ปกติ WeChat จะส่งคืนแพ็กเก็ต JSON ต่อไปนี้ไปยังบัญชีอย่างเป็นทางการ:
{"สมัครสมาชิก": 1, "OpenId": "O6_BMJRPTLM6_2SGVT7HMZOPFL2M", "ชื่อเล่น": "วงดนตรี", "เพศ": 1, "ภาษา": "ZH_CN", "City": "Guangzhou" "http://wx.qlogo.cn/mmopen/g3monuztnhkdmzicilibx6iafqac56vxlsufpb6n5wksyvy0chqkkiajsgq1dzutogvllrhjberq4emsv84eavhiaiceqfhevhiiceqk 1382694957, "UnionId": "O6_BMASDASDSAD6_2SGVT7HMZOPFL" "หมายเหตุ": "", "GroupID": 0}คำอธิบายพารามิเตอร์
| พารามิเตอร์ | อธิบาย |
|---|---|
| สมัครสมาชิก | ไม่ว่าผู้ใช้จะสมัครรับรหัสบัญชีอย่างเป็นทางการหรือไม่? หากค่าเป็น 0 หมายความว่าผู้ใช้ไม่ได้ทำตามบัญชีอย่างเป็นทางการและไม่สามารถดึงข้อมูลที่เหลือได้ |
| แบบเปิดกว้าง | ID ของผู้ใช้ไม่ซ้ำกับบัญชีอย่างเป็นทางการปัจจุบัน |
| ชื่อเล่น | ชื่อเล่นของผู้ใช้ |
| เพศ | เพศของผู้ใช้เมื่อค่าคือ 1 มันเป็นเพศชายเมื่อค่าคือ 2 มันเป็นเพศหญิงและเมื่อค่าเป็น 0 จะไม่ทราบ |
| เมือง | เมืองของผู้ใช้ |
| ประเทศ | ประเทศผู้ใช้ |
| จังหวัด | จังหวัดที่ผู้ใช้อยู่ |
| ภาษา | ภาษาของผู้ใช้ภาษาจีนที่เรียบง่ายคือ zh_cn |
| headimgurl | อวตารของผู้ใช้ค่าสุดท้ายแสดงถึงขนาดของรูปสี่เหลี่ยมจัตุรัส (มีค่า 0, 46, 64, 96 และ 132 เป็นทางเลือกและ 0 หมายถึง 640*640 ตารางเว้า) รายการนี้ว่างเปล่าเมื่อผู้ใช้ไม่มีอวตาร หากผู้ใช้เปลี่ยนอวตาร URL Avatar ดั้งเดิมจะไม่ถูกต้อง |
| สมัครสมาชิก _time | ผู้ใช้มุ่งเน้นไปที่เวลาเป็นการประทับเวลา หากผู้ใช้ติดตามหลายครั้งแล้วครั้งสุดท้ายที่จะติดตาม |
| สหภาพ | ฟิลด์นี้จะปรากฏขึ้นหลังจากผู้ใช้ผูกบัญชีอย่างเป็นทางการไปยังบัญชี WeChat Open Platform ดู: การรับข้อมูลส่วนบุคคลของผู้ใช้ (กลไก UnionId) |
| คำพูด | หมายเหตุผู้ประกอบการบัญชีอย่างเป็นทางการถึงแฟน ๆ ผู้ให้บริการบัญชีอย่างเป็นทางการสามารถเพิ่มหมายเหตุให้กับแฟน ๆ ในอินเทอร์เฟซการจัดการผู้ใช้แพลตฟอร์มสาธารณะ WeChat |
| กลุ่ม | ID กลุ่มของผู้ใช้ |
เมื่อเกิดข้อผิดพลาด WeChat จะส่งคืนรหัสข้อผิดพลาดและข้อมูลอื่น ๆ ตัวอย่างของแพ็คเก็ต JSON มีดังนี้ (ตัวอย่างนี้เป็นข้อผิดพลาด appid ที่ไม่ถูกต้อง):
{"errcode": 40013, "errmsg": "appid ไม่ถูกต้อง"}จากข้อมูลข้างต้นเรากำหนดคลาสข้อมูลผู้ใช้เพื่อจัดเก็บข้อมูลพื้นฐานของผู้ใช้
แพ็คเกจ com.souvc.weixin.pojo;/*** ชื่อคลาส: weixinuserinfo </br>* คำอธิบาย: ข้อมูลพื้นฐานของผู้ใช้ WeChat </br>* นักพัฒนา: Souvc </br>* เวลาการสร้าง: 2015-11-27 </br> // ติดตามสถานะ (1 กำลังติดตาม 0 ไม่ได้ติดตาม) ไม่สามารถรับข้อมูลที่เหลือได้เมื่อไม่ได้ติดตามการสมัครสมาชิกส่วนตัว // ผู้ใช้ติดตามเวลาการประทับเวลา หากผู้ใช้ได้ติดตามมาหลายครั้งแล้วให้ใช้เวลาสุดท้ายในการติดตามสมาชิกสตริงส่วนตัว // ชื่อเล่นสตริงส่วนตัวชื่อเล่น; // เพศของผู้ใช้ (1 คือผู้ชาย, 2 คือเพศหญิง, 0 ไม่ทราบ) เพศส่วนตัว int; // ประเทศของผู้ใช้ Private String Country; // จังหวัดส่วนตัวของผู้ใช้ // เมืองสตริงส่วนตัวของผู้ใช้ // ภาษาของผู้ใช้, ภาษาจีนง่ายขึ้น: zh_cn ภาษาสตริงส่วนตัว; // Avatar Private String headimgurl; สตริงสาธารณะ getOpenid () {return openId; } โมฆะสาธารณะ setOpenid (สตริง openId) {this.openid = openId; } public int getSubscribe () {return subscribe; } โมฆะสาธารณะ setSubscribe (int สมัครสมาชิก) {this.subscribe = สมัครสมาชิก; } สตริงสาธารณะ getSubscribetime () {ส่งคืนสมาชิก; } โมฆะสาธารณะ setSubscribetime (สตริง submribetime) {this.subscribetime = สมาชิก; } สตริงสาธารณะ getNickName () {return ชื่อเล่น; } โมฆะสาธารณะ setNickName (ชื่อเล่นสตริง) {this.nickName = ชื่อเล่น; } public int getsex () {return sex; } โมฆะสาธารณะ setsex (int sex) {this.sex = sex; } Public String GetCountry () {Return Country; } โมฆะสาธารณะ setCountry (ประเทศสตริง) {this.country = ประเทศ; } Public String getProvince () {Return Province; } โมฆะสาธารณะ setProvince (String Province) {this.province = จังหวัด; } Public String getCity () {Return City; } โมฆะสาธารณะ setCity (String City) {this.city = City; } สตริงสาธารณะ getLanguage () {ภาษากลับ; } โมฆะสาธารณะ setLanguage (ภาษาสตริง) {this.language = ภาษา; } สตริงสาธารณะ getheadimgurl () {return headimgurl; } โมฆะสาธารณะ setheadimgurl (string headimgurl) {this.headimgurl = headimgurl; - ก่อนอื่นให้ดูที่อินเทอร์เฟซเพื่อรับข้อมูลผู้ใช้:
https://api.weixin.qq.com/cgi-bin/user/info?access_token=access_token&openid=openid&lang=zh_cn
ตามการวิเคราะห์โทเค็นจะต้องได้รับข้อมูลพื้นฐานของผู้ใช้
แพ็คเกจ com.souvc.weixin.pojo;/*** ชื่อคลาส: โทเค็น </br>* คำอธิบาย: ข้อมูลรับรอง </br>* นักพัฒนา: souvc </br>* เวลาการสร้าง: 2015-11-27 </br>* รุ่นปล่อย: v1.0 </br>*/คลาสสาธารณะ // ระยะเวลาความถูกต้องของข้อมูลรับรอง, หน่วย: วินาที INT ส่วนตัวหมดอายุ; สตริงสาธารณะ getAccessToken () {return AccessToken; } โมฆะสาธารณะ setAccessToken (String AccessToken) {this.accessToken = AccessToken; } public int getExpiresin () {return expiresin; } โมฆะสาธารณะ setExpiresin (int expiresin) {this.expiresin = expiresIn; - คำขอ https, ผู้จัดการทรัสต์ที่ต้องการ
แพ็คเกจ com.souvc.weixin.util; นำเข้า java.security.cert.certificateException; นำเข้า Java.security.cert.x509certificate; นำเข้า Javax.net.ssl.x509TrustManager;/*** 2015-11-27 </br> * เวอร์ชันรุ่น: v1.0 </br> */คลาสสาธารณะ Myx509trustManager ใช้ X509TrustManager {// ตรวจสอบใบรับรองไคลเอนต์โมฆะสาธารณะตรวจสอบความต้องการ (X509Certificate [] โซ่ String AuthType) พ่นใบรับรองการรับรู้ {} // ส่งคืน x509certificate ที่เชื่อถือได้ [] getacceptedissuers () {return null; - ห่อหุ้มชั้นเรียนสาธารณะ:
แพ็คเกจ com.souvc.weixin.util; นำเข้า java.io.bufferedreader; นำเข้า java.io.inputstream; นำเข้า java.io.inputstreamreader; นำเข้า java.io.outputstream; นำเข้า Java.io.unsupportencodexception; javax.net.ssl.httpsurlconnection; นำเข้า javax.net.ssl.sslcontext; นำเข้า javax.net.ssl.sslsocketfactory; นำเข้า javax.net.ssl.trustmanager; นำเข้าสุทธิ org.slf4j.logger; นำเข้า org.slf4j.loggerfactory; นำเข้า com.souvc.weixin.pojo.token;/*** ชื่อคลาส: Commonutil </br>* คำอธิบาย: คลาสเครื่องมือทั่วไป </br>* ผู้พัฒนา: Souvc </br>* logger logger แบบคงที่ส่วนตัว = loggerFactory.getLogger (Commonutil.class); // การได้รับข้อมูลรับรอง (รับ) สตริงคงที่สาธารณะสุดท้าย token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret"; / ** * ส่งคำขอ https * * @param requesturl requesturl ที่อยู่ * @param requestmethod วิธีการขอ (รับ, โพสต์) * @param outputstr ข้อมูลที่ส่ง * @return jsonobject (รับแอตทริบิวต์ของวัตถุ JSONObject.get.get jsonObject = null; ลอง {// สร้างวัตถุ SSLContext และเริ่มต้น TrustManager [] tm = {ใหม่ myx509trustManager ()}; sslContext sslContext = sslContext.getInstance ("ssl", "sunjsse"); sslcontext.init (null, tm, ใหม่ java.security.securerandom ()); // รับวัตถุ SSLSocketFactory จากวัตถุ SSLContext ด้านบน SSLSocketFactory SSF = SSLContext.getSocketFactory (); url url = url ใหม่ (requesturl); httpsurlconnection conn = (httpsurlconnection) url.openconnection (); conn.setsslsocketfactory (SSF); conn.setDooutput (จริง); conn.setDoInput (จริง); conn.setUsecaches (เท็จ); // ตั้งค่าวิธีการร้องขอ (รับ/post) conn.setRequestMethod (requestMethod); // เขียนข้อมูลไปยังสตรีมเอาต์พุตถ้า (null! = outputStream) {outputStream outputStream = conn.getOutputStream (); // ให้ความสนใจกับรูปแบบการเข้ารหัส outputStream.write (outputStr.getBytes ("UTF-8")); outputstream.close (); } // ส่งคืนเนื้อหาจากอินพุตสตรีมอินพุทอินพุทสตรีม = conn.getInputStream (); inputStreamReader inputStreamReader = new InputStreamReader (inputStream, "UTF-8"); bufferedReader bufferedReader = ใหม่ bufferedReader (inputStreamReader); string str = null; StringBuffer buffer = new StringBuffer (); ในขณะที่ ((str = bufferedreader.readline ())! = null) {buffer.append (str); } // ปล่อยทรัพยากร bufferedReader.close (); InputStreamReader.close (); inputstream.close (); inputStream = null; conn.disconnect (); jsonObject = jsonObject.FromObject (buffer.toString ()); } catch (ConnectException ce) {log.error ("เชื่อมต่อหมดเวลา: {}", ce); } catch (exception e) {log.error ("ข้อยกเว้นการร้องขอ https: {}", e); } return jsonObject; } / *** รับข้อมูลรับรองการเข้าถึงอินเตอร์เฟส** @param AppId Credentials* @param AppSecret Key* @return* / Token Public Static Token getToken (สตริง appid, string appsecret) {โทเค็นโทเค็น = null; string requestUrl = token_url.replace ("appid", appid) .retlace ("AppSecret", AppSecret); // เริ่มต้นคำขอรับเพื่อรับข้อมูลรับรอง jsonObject jsonObject = httpsRequest (requestUrl, "get", null); if (null! = jsonObject) {ลอง {token = token ใหม่ (); token.setAccessToken (jsonobject.getString ("access_token")); token.setexpiresin (jsonobject.getint ("expires_in")); } catch (jSonexception e) {token = null; // ล้มเหลวในการรับโทเค็น log.error ("ล้มเหลวในการรับโทเค็น errcode: {} errmsg: {}", jsonobject.getInt ("errcode"), jsonobject.getString ("errmsg")); }} กลับมาโทเค็น; } / ** * การเข้ารหัส URL (UTF-8) * * @Param Source * @return * / String String สาธารณะ urlencodeUtf8 (แหล่งที่มาของสตริง) {สตริงผลลัพธ์ = แหล่งที่มา; ลอง {result = java.net.urlencoder.encode (แหล่งที่มา, "UTF-8"); } catch (unsupportencodingexception e) {e.printstacktrace (); } ผลตอบแทนผลลัพธ์; } / *** กำหนดนามสกุลไฟล์ตามประเภทเนื้อหา** @param contentType ประเภทเนื้อหา* @return* / สตริงคงที่สาธารณะ getFileExt (สตริง contentType) {string fileext = ""; if ("image/jpeg" .equals (contentType)) fileext = ".jpg"; อื่น ๆ ถ้า ("Audio/MPEG" .Equals (ContentType)) fileext = ".mp3"; อื่นถ้า ("เสียง/amr" .equals (contentType)) fileext = ".Amr"; อื่น ๆ ถ้า ("วิดีโอ/mp4" .Equals (contentType)) fileext = ".mp4"; อื่นถ้า ("วิดีโอ/mpeg4" .Equals (contentType)) fileext = ".mp4"; ส่งคืน fileext; -วิธีรับข้อมูลผู้ใช้พื้นฐาน:
/ *** รับข้อมูลผู้ใช้** @param AccessToken Interface Access Credentials* @param ID ผู้ใช้ OpenID* @@return weixinuserInfo*/ สาธารณะ weixinuserinfo getUserInfo (สตริง accessToken // splice request address requesturl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=access_token&openid=openid"; requestUrl = requestUrl.replace ("access_token", AccessToken). replace ("openId", openId); // รับข้อมูลผู้ใช้ jsonObject jsonObject = Commonutil.httpsRequest (requestUrl, "get", null); if (null! = jsonObject) {ลอง {weixinuserInfo = ใหม่ weixinuserInfo (); // ID ผู้ใช้ weixinuserinfo.setopenid (jsonobject.getString ("openId")); // ติดตามสถานะ (1 กำลังติดตาม 0 ไม่ได้ติดตาม) ไม่สามารถรับข้อมูลที่เหลือได้เมื่อไม่ได้ติดตาม weixinuserinfo.setsubscribe (jsonobject.getint ("สมัครสมาชิก")); // เวลาความสนใจของผู้ใช้ weixinuserinfo.setsubscribetime (jsonobject.getString ("subscribe_time")); // ชื่อเล่น weixinuserinfo.setNickName (jsonobject.getString ("ชื่อเล่น")); // เพศของผู้ใช้ (1 คือชาย, 2 เป็นเพศหญิง, 0 ไม่ทราบ) weixinuserinfo.setsex (jsonobject.getint ("เพศ")); // ประเทศของผู้ใช้ WeixinuserInfo.SetCountry (jsonObject.getString ("ประเทศ")); // จังหวัดของผู้ใช้ Weixinuserinfo.setProvince (jsonobject.getString ("จังหวัด")); // เมืองของผู้ใช้ WeixinuserInfo.SetCity (jsonObject.getString ("เมือง")); // ภาษาของผู้ใช้ภาษาจีนที่เรียบง่ายคือ zh_cn weixinuserinfo.setLanguage (jsonobject.getString ("ภาษา")); // Avatar ผู้ใช้ Weixinuserinfo.setheadimgurl (jsonobject.getString ("headimgurl")); } catch (exception e) {ถ้า (0 == weixinuserinfo.getSubscribe ()) {log.error ("ผู้ใช้ {} unsong", weixinuserinfo.getOpenid ()); } else {int errorCode = jsonObject.getInt ("errCode"); String errormsg = jsonobject.getString ("errmsg"); log.error ("ไม่สามารถรับข้อมูลผู้ใช้ errcode: {} errmsg: {}", errorcode, errormsg); }}} ส่งคืน weixinuserInfo; -วิธีทดสอบ: ให้ความสนใจเพื่อแทนที่สิ่งต่อไปนี้ด้วยคีย์ AppID และ Secret ของคุณ
โมฆะคงที่สาธารณะหลัก (สตริง args []) {// รับข้อมูลรับรองการเข้าถึงอินเตอร์เฟสสตริง accessToken = Commonutil.getToken ("xxxx", "xxxx"). getAccessToken (); / *** รับข้อมูลผู้ใช้*/ weixinuserInfo ผู้ใช้ = getUserInfo (AccessToken, "Ook-yujvd9GeeGH6NRIEN-GNLRVW"); System.out.println ("OpenId:" + user.getOpenid ()); System.out.println ("ติดตามสถานะ:" + user.getSubscribe ()); System.out.println ("ติดตามเวลา:" + user.getSubscribetime ()); System.out.println ("ชื่อเล่น:" + user.getNickName ()); System.out.println ("เพศ:" + user.getsex ()); System.out.println ("ประเทศ:" + user.getCountry ()); System.out.println ("จังหวัด:" + user.getProvince ()); System.out.println ("เมือง:" + user.getCity ()); System.out.println ("ภาษา:" + user.getLanguage ()); System.out.println ("Avatar:" + user.getheadimgurl ()); -ผลกระทบมีดังนี้:
OpenId: ook-yujvd9geegh6nrien-gnlrvw
สถานะของความสนใจ: 1
ตามเวลา: 1449021142
ชื่อเล่น: Feng Shao เพศ: 1
ประเทศ: จีนจังหวัด: เมืองกวางตุ้ง: ภาษากวางโจว: zh_cn
Avatar: http://wx.qlogo.cn/mmopen/lozievyfca7azq7ckiamdpqicudngdec0nzb7zaljdl3tzfvfehwm1afqexnicnideh0iqytt0nrip06ibg4w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5w5wf
เนื้อหาข้างต้นแนะนำข้อมูลพื้นฐานของผู้ใช้ในการพัฒนาแพลตฟอร์มสาธารณะ WeChat สำหรับ WeChat เวอร์ชัน Java จริง ฉันหวังว่าการแบ่งปันบทความนี้จะเป็นประโยชน์ต่อการทำงานและการศึกษาในอนาคตของคุณ ในเวลาเดียวกันขอขอบคุณสำหรับการสนับสนุนอย่างต่อเนื่องสำหรับเว็บไซต์ Wulin Network