Nachdem der Nachfolger mit dem offiziellen Konto interagiert, kann das offizielle Konto das OpenID der Follow erhalten (das verschlüsselte WeChat -Konto, das OpenID jedes Benutzers für jedes offizielle Konto ist eindeutig. Für verschiedene offizielle Konten ist dies derselbe Benutzer OpenID unterschiedlich).
Das offizielle Konto kann grundlegende Benutzerinformationen auf der Grundlage von OpenID über diese Oberfläche erhalten, einschließlich Spitzname, Avatar, Geschlecht, Stadt, Sprache und Zeitpunkt der Nachuntersuchung.
Entwickler können grundlegende Benutzerinformationen über OpenID erhalten. Bitte verwenden Sie das HTTPS -Protokoll.
Wir können uns die offizielle Dokumentation ansehen: grundlegende Informationen über Benutzer erhalten.
Schnittstellenanforderungsanforderung Beschreibung
HTTP -Anforderungsmethode: Get
https://api.weixin.qq.com/cgi-ner/user/info?access_token=access_token&openid=openid&lang=ZH_CN
Parameterbeschreibung
| Parameter | Ist es notwendig? | veranschaulichen |
|---|---|---|
| access_token | Ja | Rufen Sie Schnittstellen -Anmeldeinformationen auf |
| OpenID | Ja | Die Identität eines gewöhnlichen Benutzers ist einzigartig für das aktuelle offizielle Konto |
| Lang | NEIN | Kehren Sie in das Land und die regionale Sprachversion zurück, zh_cn vereinfacht Chinesisch, zh_tw traditioneller Chinesisch, en Englisch |
Kehren Sie zur Beschreibung zurück
Unter normalen Umständen wird WeChat das folgende JSON -Paket auf das offizielle Konto zurückgeben:
{ "subscribe": 1, "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", "nickname": "Band", "sex": 1, "language": "zh_CN", "city": "Guangzhou", "province": "Guangdong", "country": "China", "headimgurl": "http://wx.qLogo.cn/mmopen/g3monuztnhkdmzicilibx6iafqac56vxlsufpb6n5wkSyvy0Chqkkiajsgq1dzutogvlrHJberq4emsv84EAWVHIACHIACHIACHIACHIACHIACHIACHIACHIAGHIACHIAGHIACHIAGHIACHIAGE - 1382694957, "UnionId": "O6_BMASDASDSAD6_2SGVT7HMZOPFL" "Bemerkung": "", "Groupid": 0}Parameterbeschreibung
| Parameter | veranschaulichen |
|---|---|
| abonnieren | Ob der Benutzer die offizielle Konto -ID abonniert? Wenn der Wert 0 ist, bedeutet dies, dass der Benutzer das offizielle Konto nicht befolgt hat und die verbleibenden Informationen nicht ziehen kann. |
| OpenID | Benutzer -ID, eindeutig für das aktuelle offizielle Konto |
| Spitzname | Spitzname des Benutzers |
| Sex | Das Geschlecht des Benutzers, wenn der Wert 1 ist, ist er männlich, wenn der Wert 2 ist, ist er weiblich und wenn der Wert 0 ist, ist er unbekannt |
| Stadt | Die Stadt des Benutzers |
| Land | Benutzerland |
| Provinz | Die Provinz, in der sich der Benutzer befindet |
| Sprache | Die Sprache des Benutzers, vereinfachtes Chinesisch ist zh_cn |
| Headimgurl | Der Avatar des Benutzers, der letzte Wert repräsentiert die Größe des quadratischen Avatars (es gibt 0, 46, 64, 96 und 132 Werte und 0 repräsentieren 640*640 Quadrat -Avatar). Dieser Artikel ist leer, wenn der Benutzer keinen Avatar hat. Wenn der Benutzer den Avatar ändert, ist die ursprüngliche Avatar -URL ungültig. |
| abonnieren_time | Der Benutzer konzentriert sich auf die Zeit als Zeitstempel. Wenn der Benutzer es oft befolgt hat, dann folgt das letzte Mal, dass es folgt |
| UnionId | Dieses Feld wird erst angezeigt, nachdem der Benutzer das offizielle Konto an das WeChat Open Platform -Konto gebunden hat. Siehe: Benutzer persönliche Informationen erhalten (UnionID -Mechanismus) |
| Bemerkung | Notizen der offiziellen Kontobetreiber an die Fans. Offizielle Kontobetreiber können Fans in der Benutzerverwaltungsoberfläche der WeChat Public Platform Notizen hinzufügen. |
| GroupId | Die Gruppen -ID des Benutzers |
Wenn ein Fehler auftritt, gibt WeChat Fehlercodes und andere Informationen zurück. Das Beispiel des JSON -Pakets lautet wie folgt (dieses Beispiel ist ein ungültiger Anhängerfehler):
{"Errcode": 40013, "errmsg": "Ungültiges Appid"}Basierend auf den oben genannten Informationen definieren wir eine Benutzerinformationsklasse, um die grundlegenden Informationen des Benutzers zu speichern.
Paket com.souvc.weixin.pojo;/*** Klasse Name: WexinUserInfo </br>* Beschreibung: Grundlegende Informationen von WeChat-Benutzern </br>* Entwickler: Souvc </br>* Creation Time: 2015-11-27 </br>* Release-Version: v1.0 </br>*/public class; // Status folgen (1 folgt, 0 folgt nicht), es können keine verbleibenden Informationen erhalten werden, wenn kein privates Int -Abonnement folgt. // Benutzer folgen Zeit, einem Zeitstempel. Wenn der Benutzer viele Male verfolgt ist, nehmen Sie sich das letzte Mal, um private String -Abonnenten zu folgen. // Spitzname privater String -Spitzname; // Benutzergeschlecht (1 ist männlich, 2 ist weiblich, 0 ist unbekannt) Privat int Sex; // User Country Private String Country; // Nutzern Provinz Private String Provinz; // Benutzer der Stadt Private String City; // Benutzersprache des Benutzers, vereinfachtes Chinesisch: ZH_CN Private String -Sprache; // Avatar Private String Headimgurl des Benutzers; public String getopenid () {return openID; } public void setOpenID (String OpenID) {this.openid = openID; } public int getSubScribe () {return abonnieren; } public void setSubScribe (int abonnieren) {this.subScribe = abonnieren; } public String getSubsCressTime () {return deNCRIPRETTIME; } public void setSubscripTime (String delternetime) {this.subscribTime = donneCringTime; } public String getNickName () {return spickname; } public void setNickName (String -Spitzname) {this.nickname = spitzname; } 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 provinz; } public void setProvince (String -Provinz) {this.province = provinz; } public String getCity () {return city; } public void setCity (String City) {this.city = City; } public String getLanguage () {return Sprache; } public void setLanguage (String -Sprache) {this.language = Sprache; } public String getheadimgurl () {return Headimgurl; } public void Setheadimgurl (String Headimgurl) {this.headimgurl = Headimgurl; }} Schauen wir uns zunächst die Schnittstelle an, um Benutzerinformationen zu erhalten:
https://api.weixin.qq.com/cgi-ner/user/info?access_token=access_token&openid=openid&lang=ZH_CN
Laut Analyse ist ein Token erforderlich, um die grundlegenden Informationen des Benutzers zu erhalten.
Paket com.souvc.weixin.pojo;/*** Klasse Name: Token </br>* Beschreibung: Anmeldeinformationen </br>* Entwickler: Souvc </br>* Erstellungszeit: 2015-11-27 </br>* Release-Version: v1.0 </br>*/public class token {// interface Accessocts privat StringTeCh; // Anmeldeinformationsvaliditätszeit, Einheit: Sekunden private int läuft ab; public String getAccessToken () {return AccessToken; } public void setAccessToken (String AccessToken) {this.accessToken = AccessToken; } public int getExpiresin () {return läuft aus; } public void setExpiressin (int expiresin) {this.expiresin = expiresin; }} HTTPS -Anfrage, Trust Manager erforderlich
paket com.souvc.weixin Zeit: 2015-11-27 </br> * Release-Version: v1.0 </br> */public class myx509Trustmanager implementiert x509Trustmanager {// Das Client-Zertifikat public void checkClienttrusted (x509Certificate [] kettenketten, String authorpe) löst das Zertifikat aus. authType) löst CertificateException {} // zurück, das vertrauenswürdige x509Certificate [] getAcceptedISSUERS () {return null; }} In eine öffentliche Klasse eingekapselt:
Paket com.souvc.weixin javax.net.ssl.httpSurlConnection; importieren javax.net.ssl.slcontext; import Javax.net.SSL.SLSOCKETFACTORTOR; org.slf4j.logger; import org.slf4j.loggerfactory; import com.souvc.weixin.pojo.token;/*** Klasse Name: CommonUtil </br>* Beschreibung: Allgemeine Tools-Klasse </br>* Developer: Souvc </br> */BR>*/BR>*/CREATIONAL: CommonUtil {private static logger log = loggerFactory.getLogger (CommonUtil.class); // Anmeldeinformationen erhalten (Get) Public Final Static String token_url = "https://api.weixin.qqq.com/cgi-ner/token?grant_type=client_credential&appid=appid&secret=appsecret"; /** * Send https request* * @param requestUrl Request Address* @param requestMethod Request Method (GET, POST) * @param outputStr The data submitted * @return JSONObject(get the attribute value of the json object through JSONObject.get(key)) */ public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) { JSONObject jsonObject = Null; Versuchen Sie {// SSLContext -Objekt erstellen und TreuhandManager [] tm = {new Myx509TrustManager ()} initialisieren; SSLContext SSLContext = SSLContext.getInstance ("SSL", "Sunjsse"); SSLContext.init (Null, TM, New Java.security.securerandom ()); // das SSLSOCKETFACTORY -Objekt aus dem obigen SSLContext -Objekt SSLSOCKETFACTORY SSF = SSLCONTEXT.GetSocketFactory () abrufen; URL URL = neue URL (Requesturl); HttpsurlConnection conn = (httpsurlConnection) url.openconnection (); Conn.SetsSlsocketFactory (SSF); conn.setDooutput (true); Conn.SetDoInput (true); Conn.SetUSecaches (falsch); // Setzen Sie die Anforderungsmethode (get/post) conn.setRequestMethod (RequestMethod); // Daten in den Ausgabestream schreiben if (null! = OutputStream) {outputStream outputStream = conn.getOutputStream (); // achten Sie auf das Codierungsformat outputStream.write (outputstr.getBytes ("utf-8"); outputStream.close (); } // Inhalt des Eingabestreams inputStream inputStream = conn.getInputStream () zurückgeben; InputStreamReader InputStreamReader = New InputStreamReader (InputStream, "UTF-8"); BufferedReader bufferedReader = neuer BufferedReader (InputStreamReader); String str = null; StringBuffer Buffer = new StringBuffer (); while ((str = bufferedReader.readline ())! = null) {buffer.append (str); } // die Ressource BufferedReader.CLOSE () freigeben; InputStreamReader.CLOSE (); inputStream.close (); inputStream = null; conn.disconnect (); JsonObject = jsonObject.fromObject (buffer.toString ()); } catch (ConnectException CE) {log.Error ("Connect Timeout: {}", CE); } catch (Ausnahme e) {log.Error ("https anfordern Ausnahme: {}", e); } return JsonObject; } / *** Schnittstellenzugriffsanmeldeinformationen erhalten** @param Appid Anmeldeinformationen* @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); // Initiieren Sie eine Get -Anfrage, um Anmeldeinformationen zu erhalten. if (null! = jsonObject) {try {token = new token (); token.setAccessToken (jsonObject.getString ("access_token")); token.setExpiresin (jsonObject.getInt ("expires_in")); } catch (jSonexception e) {token = null; // versäumt es, Token log.Error zu erhalten ("" Es wurde nicht, Token Errcode zu erhalten: {} errmsg: {} ", jsonObject.getInt (" errcode "), jsonObject.getString (" errmsg "); }} return token; } / ** * URL-Codierung (UTF-8) * * @param Source * @return * / public static String urlencodeUtf8 (String Source) {String result = source; try {result = java.net.urlencoder.encode (Quelle, "utf-8"); } catch (unportedenCodingException e) {e.printstacktrace (); } Rückgabeergebnis; } / *** Dateierweiterung basierend auf dem Inhaltstyp** @param contentType Inhaltstyp* @return* / public static String getFileexte (String contentType) {String Fileext = ""; if ("Image/jpeg" .Equals (contentType)) Fileext = ".JPG"; sonst if ("audio/mpeg" .Equals (contentType)) Fileext = ".mp3"; sonst if ("audio/amr" .equals (contentType)) Fileext = ".Amr"; sonst if ("Video/mp4" .Equals (contentType)) Fileext = ".MP4"; sonst if ("Video/mpeg4" .Equals (contentType)) Fileext = ".MP4"; Return Fileext zurückgeben; }}So erhalten Sie grundlegende Benutzerinformationen:
/ *** Benutzerinformationen abrufen** @param AccessToken Interface Access Anmeldeinformationen* @param openID Benutzer -ID* @Return wixinuserInfo*/ public static wexInuserinfo getUserInfo (String AccessToken, String OpenID) {WeixInuserInfo wixinuserinfo = null; // Spleißanforderungsadresse String requesturl = "https://api.weixin.qq.com/cgi-ner/user/info?access_token=access_token&openid=Openid"; Requesturl = Requesturl.Replace ("Access_Token", AccessToken) .Replace ("OpenID", OpenID); // Benutzerinformationen abrufen JSONObject jsonObject = CommonUtil.httpsRequest (Requesturl, "get", null); if (null! // Benutzer -ID weixinuserinfo.setOpenid (jsonObject.getString ("openID")); // Status folgen (1 folgt, 0 folgt nicht), es können keine verbleibenden Informationen erhalten werden, wenn nicht Wexinuserinfo.SetsuBScribe (jsonObject.getInt ("abonnieren")); // Benutzeraufmerksamkeitszeit wixinuserinfo.setsubscripTime (jsonObject.getString ("subcribe_time")); // Spitzname Wixinuserinfo.setnickname (jsonObject.getString ("Spitzname")); // Benutzer Geschlecht (1 ist männlich, 2 ist weiblich, 0 ist unbekannt) wixinuserinfo.setSex (jsonObject.getInt ("Sex")); // Das Land des Benutzers wixinuserinfo.setcountry (jsonObject.getString ("Land")); // Die Provinz des Benutzers Wixinuserinfo.setProvince (jsonObject.getString ("Provinz")); // Die Stadt des Benutzers Wixinuserinfo.SetCity (jsonObject.getString ("Stadt")); // Die Sprache des Benutzers ist vereinfachtes Chinesisch zh_cn wexinuserinfo.setLanguage (jsonObject.getString ("Sprache")); // Benutzer avatar wixinuserinfo.setheadimgurl (jsonObject.getString ("Headimgurl")); } catch (Ausnahme e) {if (0 == wixInuserinfo.getSubscribe ()) {log.Error ("user {} unsong", wixInuserinfo.getOpenid ()); } else {int errorCode = jsonObject.getInt ("errcode"); String errormsg = jsonObject.getString ("errmsg"); log.Error ("Fehler beim Erhalten von Benutzerinformationen erfassen Errcode: {} errmsg: {}", errorCode, errormsg); }}} return wixinuserinfo; }Testmethode: Achten Sie darauf, dass Sie Folgendes durch Ihren Anhang und Ihren geheimen Schlüssel ersetzen.
public static void main (String args []) {// Schnittstellenzugriffsanmeldeinformationen String AccessToken = CommonUtil.getToken ("xxxx", "xxxx"). getAccessToken (); / *** Benutzerinformationen abrufen*/ wixinuserinfo user = getUerInfo (AccessToken, "ook-yujvd9geegh6nrien-gnlrvw"); System.out.println ("OpenID:" + user.getOpenID ()); System.out.println ("Status folgen:" + user.getSubScribe ()); System.out.println ("Time folge:" + user.getSubsCressime ()); System.out.println ("Spitzname:" + user.getNickName ()); System.out.println ("Geschlecht:" + user.getSex ()); System.out.println ("Land:" + user.getCountry ()); System.out.println ("Provinz:" + user.getProvince ()); System.out.println ("Stadt:" + user.getCity ()); System.out.println ("Sprache:" + user.getLanguage ()); System.out.println ("avatar:" + user.getheadimgurl ()); }Die Effekte sind wie folgt:
OpenID: ook-yujvd9geegh6nrien-gnlrvw
Status der Aufmerksamkeit: 1
Folgen Sie der Zeit: 1449021142
Spitzname: Feng Shao Geschlecht: 1
Land: China Provinz: Guangdong Stadt: Guangzhou Sprache: ZH_CN
Avatar: http://wx.qlogo.cn/mmopen/lozievyfca7azq7ckiamdpqicudngdec0nzb7zaljdl3TZFVFVFEHWM1AFQEXNICNIDH0IQYTT0NRIP06IBG4W5WFLASFFFX9QIB0/0/01.
Der obige Inhalt führt die grundlegenden Informationen von Benutzern in der Entwicklung der WeChat Public Platform für die tatsächliche Java -Version von WeChat ein. Ich hoffe, dass dieser Artikel teilen wird für Ihre zukünftige Arbeit und Ihr Studium hilfreich. Gleichzeitig Vielen Dank für Ihre fortgesetzte Unterstützung für die Wulin Network -Website.