Setelah pengikut berinteraksi dengan akun resmi, akun resmi dapat memperoleh OpenID berikut (akun WeChat yang dienkripsi, setiap pengguna OpenID untuk setiap akun resmi unik. Untuk akun resmi yang berbeda, OpenID pengguna yang sama berbeda).
Akun resmi dapat memperoleh informasi pengguna dasar berdasarkan OpenID melalui antarmuka ini, termasuk nama panggilan, avatar, jenis kelamin, kota, bahasa, dan waktu tindak lanjut.
Pengembang dapat memperoleh informasi pengguna dasar melalui OpenID. Harap gunakan protokol HTTPS.
Kita dapat melihat dokumentasi resmi: mendapatkan informasi dasar tentang pengguna.
Deskripsi Permintaan Panggilan Antarmuka
Metode Permintaan HTTP: Dapatkan
https://api.weixin.qq.com/cgi-bin/user/info?access_token=access_token&openid=openid&lang=zh_cn
Deskripsi parameter
| parameter | Apakah perlu | menjelaskan |
|---|---|---|
| access_token | Ya | Kredensial Antarmuka Panggilan |
| OpenID | Ya | Identitas pengguna biasa adalah unik untuk akun resmi saat ini |
| Lang | TIDAK | Kembali ke Versi Bahasa Negara dan Regional, ZH_CN Sederhana Cina, ZH_TW Tradisional China, En English |
Kembali ke deskripsi
Dalam keadaan normal, WeChat akan mengembalikan paket JSON berikut ke akun resmi:
{"Berlangganan": 1, "openId": "o6_bmjrptlm6_2sgvt7hmzopfl2m", "julukan": "band", "seks": 1, "bahasa": "zh_cn", "city": "guangzhou", "provinsi": "Guangdongg", "country" "country" "," country "," guangzhou "," guangzhou "," guangzhou "," guangzhou "," "http://wx.qlogo.cn/mmopen/g3monuztnhkdmzicilibx6iafqac56vxlsufpb6n5wksyvy0chqkiajsgq1dzutogvllhjberqqqqq. 1382694957, "UnionId": "O6_BMASDASDSAD6_2SGVT7HMZOPFL" "Komentar": "", "GroupID": 0}Deskripsi parameter
| parameter | menjelaskan |
|---|---|
| berlangganan | Apakah pengguna berlangganan ID akun resmi? Jika nilainya 0, itu berarti bahwa pengguna belum mengikuti akun resmi dan tidak dapat menarik informasi yang tersisa. |
| OpenID | ID pengguna, unik untuk akun resmi saat ini |
| nama panggilan | Nama panggilan pengguna |
| seks | Jenis kelamin pengguna, ketika nilainya 1, laki -laki, ketika nilainya 2, itu adalah perempuan, dan ketika nilainya 0, tidak diketahui |
| kota | Kota pengguna |
| negara | Negara pengguna |
| propinsi | Provinsi tempat pengguna berada |
| bahasa | Bahasa pengguna, Cina yang disederhanakan adalah ZH_CN |
| headimgurl | Avatar pengguna, nilai terakhir mewakili ukuran avatar kuadrat (ada 0, 46, 64, 96, dan 132 nilai opsional, dan 0 mewakili 640*640 avatar persegi). Item ini kosong ketika pengguna tidak memiliki avatar. Jika pengguna mengubah avatar, URL avatar asli akan tidak valid. |
| berlangganan_time | Pengguna berfokus pada waktu, sebagai cap waktu. Jika pengguna telah mengikutinya berkali -kali, maka terakhir kali mengikuti |
| Unionid | Bidang ini hanya akan muncul setelah pengguna mengikat akun resmi ke akun platform terbuka WeChat. Lihat: Mendapatkan Informasi Pribadi Pengguna (Mekanisme UnionID) |
| Komentar | Catatan operator akun resmi untuk penggemar. Operator akun resmi dapat menambahkan catatan kepada penggemar di antarmuka manajemen pengguna platform publik WeChat. |
| groupid | ID grup pengguna |
Ketika kesalahan terjadi, WeChat akan mengembalikan kode kesalahan dan informasi lainnya. Contoh paket JSON adalah sebagai berikut (contoh ini adalah kesalahan appid yang tidak valid):
{"errcode": 40013, "errmsg": "appid tidak valid"}Berdasarkan informasi di atas, kami mendefinisikan kelas informasi pengguna untuk menyimpan informasi dasar pengguna.
Paket com.souvc.weixin.pojo;/*** Nama kelas: weixinuserinfo </br>* Deskripsi: Informasi Dasar Pengguna WeChat </br>* Pengembang: Souvc </br>* waktu pembuatan: 2015-11 </br> Versi rilis: V1.0 </br>; // Ikuti status (1 berikut, 0 tidak berikut), tidak ada informasi yang tersisa yang dapat diperoleh ketika tidak mengikuti intscribe int pribadi; // Pengguna mengikuti waktu, cap waktu. Jika pengguna telah mengikuti berkali -kali, luangkan waktu terakhir untuk mengikuti Subscribetime String Private; // Nickname Private String Nickname; // Jenis Kelamin Pengguna (1 adalah pria, 2 adalah perempuan, 0 tidak diketahui) Private Int Sex; // Negara String Pribadi Pengguna Negara; // provinsi provinsi provinsi provinsi pribadi; // Pengguna City Private String City; // Bahasa Pengguna, Bahasa Mandarin Sederhana: ZH_CN Private String Language; // Avatar Private String headimgurl; Public String getOpenId () {return OpenId; } public void setopenId (String openId) {this.openid = openId; } public int getSubscribe () {return subscribe; } public void setSubscribe (int berlangganan) {this.subscribe = berlangganan; } public String getSubscribetime () {return subscribetime; } public void setSubScribetime (String Subscribetime) {this.subscribetime = Subscribetime; } public string getNickName () {return nickname; } public void setNickName (nickname string) {this.nickname = nickName; } public int getsex () {return sex; } public void setSex (int sex) {this.sex = sex; } public string getCountry () {return country; } public void setCountry (string country) {this.country = country; } public string getProvince () {return province; } public void setProvince (String Province) {this.province = province; } public string getCity () {return city; } public void setCity (string city) {this.city = city; } public String getLanguage () {return bahasa; } public void setLanguage (string language) {this.language = bahasa; } public string getHeadimgUrl () {return headimgurl; } public void setHeadimgUrl (headimgurl string) {this.headimgurl = headimgurl; }} Mari kita lihat antarmuka untuk mendapatkan informasi pengguna:
https://api.weixin.qq.com/cgi-bin/user/info?access_token=access_token&openid=openid&lang=zh_cn
Menurut analisis, token diperlukan untuk mendapatkan informasi dasar pengguna.
package com.souvc.weixin.pojo;/*** Class name: Token </br>* Description: Credentials</br>* Developer: souvc </br>* Creation time: 2015-11-27 </br>* Release version: V1.0 </br> */public class Token { // Interface access credentials private String accessToken; // periode validitas kredensial, unit: detik int private kedaluwarsa; string publik getAccessToken () {return accessToken; } public void setAccessToken (String accessToken) {this.accessToken = accessToken; } public int getExpiresin () {return berakhir; } public void setExpiresin (int kedaluwarsa) {this.expiresin = kedaluwarsa; }} Permintaan HTTPS, Diperlukan Manajer Kepercayaan
Paket com.souvc.weixin.util; impor java.security.cert.certificateException; impor java.security.cert.x509certificate; impor javax.net.ssl.x509RustManager;/*** Nama Klasi time: 2015-11-27 </br>* Release version: V1.0 </br> */public class MyX509TrustManager implements X509TrustManager { // Check the client certificate public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } // Check the server certificate public void checkServerTrusted (rantai X509Certificate [], String AuthType) melempar CertificateException {} // kembalikan x509certificate tepercaya [] getacceptedissuers () {return null; }} Merangkum kelas publik:
Paket com.souvc.weixin.util; import java.io.bufferedreader; import java.io.inputstream; import java.io.inputStreamReader; import java.io.outputStream; impor java.unsupportedencodingException; impor java.net. javax.net.ssl.httpsurlconnection; import javax.net.ssl.sslcontext; import javax.net.ssl.sslsocketfactory; impor javax.net.ssl.trustManager; impor net.sf.json.jsonexception; org.slf4j.logger; impor org.slf4j.loggerFactory; impor com.souvc.weixin.pojo.token;/*** Nama kelas: Commonutil </br>* Deskripsi: Kelas General </br>* pengembang: SOUVC </br>* waktu kreasi: 2015-11 {private static logger log = loggerFactory.getLogger (commonutil.class); // Perolehan kredensial (get) string statis akhir publik Token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret"; / ** * Kirim Permintaan HTTPS * * @param RequestUrl Alamat Permintaan * @param RequestMethod Metode Permintaan (Get, Posting) * @param OutputStr data yang dikirimkan * @return jsonObject (Dapatkan nilai atribut objek JSONTPSRUCTED (Key) */ Public Static JsonObject HTTPSRUCTED (STRINGMEST (STRING PUBLIK) OUDREQURED {STRING PUBUL) jsonObject = null; Coba {// Buat objek SSLContext dan inisialisasi trustManager [] tm = {new Myx509TrustManager ()}; Sslcontext sslcontext = sslcontext.getInstance ("ssl", "sunjsse"); sslcontext.init (null, tm, java.security.securerandom ()) baru; // Dapatkan objek SSLSocketFactory dari objek SSLContext SSLSocketFactory SSF = sslcontext.getSocketFactory (); Url url = url baru (requestUrl); HttpsurlConnection conn = (httpsurlConnection) url.openconnection (); Conn.SetsslsocketFactory (SSF); Conn.SetDoOutput (true); Conn.setDoInput (true); Conn.setusecaches (false); // Atur metode permintaan (get/post) conn.setRequestMethod (requestMethod); // Tulis data ke aliran output if (null! = OutputStream) {outputStream outputStream = conn.getOutputStream (); // Perhatikan format pengkodean outputStream.write (outputstr.getbytes ("UTF-8")); outputStream.close (); } // mengembalikan konten dari input stream inputStream inputStream = conn.getInputStream (); InputStreamReader inputStreamReader = inputStreamReader baru (inputStream, "UTF-8"); BufferedReader bufferedReader = BufferedReader baru (InputStreamReader); String str = null; StringBuffer buffer = stringBuffer baru (); while ((str = bufferedreader.readline ())! = null) {buffer.append (str); } // Lepaskan sumber daya bufferedReader.close (); inputStreamReader.close (); inputStream.close (); inputStream = null; Conn.Disconnect (); jsonObject = jsonObject.fromObject (buffer.toString ()); } catch (ConnectException CE) {LOG.Error ("Connect Timeout: {}", CE); } catch (Exception e) {log.error ("https permintaan pengecualian: {}", e); } return jsonObject; } / *** Dapatkan kredensial akses antarmuka** @param appid kredensial* @param appsecret Key* @return* / public static token getToken (string appid, string appsecret) {token token = null; String requestUrl = token_url.replace ("appId", appId) .replace ("appsecret", appsecret); // memulai permintaan GET untuk mendapatkan kredensial jsonObject jsonObject = httpsRequest (requestUrl, "get", null); if (null! = jsonObject) {coba {token = new token (); token.setAccessToken (jsonobject.getString ("access_token")); token.setExpiresin (jsonobject.getInt ("Expires_in")); } catch (jsonexception e) {token = null; // Gagal mendapatkan token log.Error ("Gagal mendapatkan token errcode: {} errmsg: {}", jsonobject.getInt ("errcode"), jsonobject.getString ("errmsg")); }} return token; } / ** * URL Encode (UTF-8) * * @param Source * @return * / public static string urlencodeutf8 (sumber string) {string result = sumber; coba {hasil = java.net.urlencoder.encode (sumber, "UTF-8"); } catch (UnsupportedEncodingException e) {e.printstacktrace (); } hasil pengembalian; } / *** Tentukan ekstensi file berdasarkan jenis konten** @param ContentType Tipe Konten* @Return* / Public Static String getFileExt (String ContentType) {String fileExt = ""; if ("Image/JPEG" .Equals (ContentType)) fileext = ".jpg"; lain jika ("audio/mpeg" .Equals (contentType)) fileext = ".mp3"; lain jika ("audio/amr" .Equals (contentType)) fileext = ".amr"; lain jika ("video/mp4" .Equals (contentType)) fileext = ".mp4"; lain jika ("video/mpeg4" .Equals (contentType)) fileext = ".mp4"; mengembalikan fileext; }}Cara mendapatkan informasi pengguna dasar:
/ *** Dapatkan informasi pengguna** @param AccessToken Interface Access Credentials* @param OpenID ID pengguna* @return weixinuserinfo*/ public static weixinuserinfo getUserinfo (string accessToken, string openId) {weixinuserfo weixinuserinfo = null; // Alamat permintaan splice String 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); // Dapatkan informasi pengguna jsonObject jsonObject = commonutil.httpsRequest (requestUrl, "get", null); if (null! = jsonObject) {coba {weixinuserinfo = new weixinuserinfo (); // ID pengguna weixinuserinfo.setopenid (jsonobject.getString ("openId")); // Ikuti status (1 berikut, 0 tidak berikut), tidak ada informasi yang tersisa yang dapat diperoleh ketika tidak mengikuti weixinuserinfo.setsubsubscribe (jsonobject.getint ("berlangganan")); // waktu perhatian pengguna weixinuserinfo.setsubscribetime (jsonobject.getString ("subscribe_time")); // nama panggilan weixinuserinfo.setnickname (jsonobject.getString ("nickname")); // jenis kelamin pengguna (1 adalah pria, 2 adalah perempuan, 0 tidak diketahui) weixinuserinfo.setsex (jsonobject.getint ("sex")); // negara pengguna weixinuserinfo.setCountry (jsonobject.getString ("country")); // provinsi pengguna weixinuserinfo.setprovince (jsonobject.getString ("provinsi")); // kota pengguna weixinuserinfo.setCity (jsonobject.getString ("city")); // Bahasa pengguna, bahasa Cina yang disederhanakan adalah zh_cn weixinuserinfo.setlanguage (jsonobject.getString ("bahasa")); // avatar pengguna weixinuserinfo.setheadimgurl (jsonobject.getString ("headimgurl")); } catch (exception e) {if (0 == weixinuserinfo.getSubscribe ()) {log.error ("user {} tidak seanjal", weixinuserinfo.getopenid ()); } else {int errorCode = jsonobject.getInt ("errcode"); String errorrormsg = jsonobject.getString ("errmsg"); LOG.Error ("Gagal mendapatkan informasi pengguna errcode: {} errmsg: {}", errorCode, errormsg); }}} return weixinuserinfo; }Metode Tes: Perhatikan untuk mengganti yang berikut dengan kunci appid dan rahasia Anda.
public static void main (string args []) {// Dapatkan kredensial akses antarmuka string accessToken = commonutil.getToken ("xxxx", "xxxx"). getAccessToken (); / *** Dapatkan informasi pengguna*/ weixinuserinfo user = getUserInfo (AccessToken, "ook-yujvd9geegh6nrien-gnlrvw"); System.out.println ("OpenId:" + user.getopenid ()); System.out.println ("Follow Status:" + user.getSubscribe ()); System.out.println ("Follow Time:" + user.getSubscribetime ()); System.out.println ("NickName:" + user.getNickName ()); System.out.println ("Jenis Kelamin:" + user.getsex ()); System.out.println ("Negara:" + user.getCountry ()); System.out.println ("Provinsi:" + user.getProvince ()); System.out.println ("City:" + user.getCity ()); System.out.println ("Bahasa:" + user.getLanguage ()); System.out.println ("Avatar:" + user.getHeadimgurl ()); }Efeknya adalah sebagai berikut:
OpenID: ook-yujvd9geegh6nrien-gnlrvw
Status Perhatian: 1
Ikuti Waktu: 1449021142
Nama Panggilan: Jenis Kelamin Feng Shao: 1
Negara: Provinsi Cina: Kota Guangdong: Guangzhou Bahasa: ZH_CN
Avatar: http://wx.qlogo.cn/mmopen/lozievyfca7azq7ckiamdpqicudngdec0nzb7zaljdl3tzfvfehwm1afqexnicnideh0iqytt0nrip06ibg4w5wrffx9iqytT0nrip06ibg4w5wabfx9
Konten di atas memperkenalkan informasi dasar pengguna dalam pengembangan platform publik WeChat untuk versi Java yang sebenarnya dari WeChat. Saya berharap bahwa berbagi artikel ini akan membantu pekerjaan dan belajar di masa depan Anda. Pada saat yang sama, terima kasih atas dukungan Anda yang berkelanjutan untuk situs web Wulin Network.