После того, как последователь взаимодействует с официальной учетной записью, официальная учетная запись может получить следующую OpenID (зашифрованная учетная запись weChat, открытая IDID каждого пользователя для каждой официальной учетной записи является уникальной. Для различных официальных учетных записей, один и тот же пользователь OpenID отличается).
Официальная учетная запись может получить базовую информацию пользователя на основе OpenID через этот интерфейс, включая прозвище, аватар, пол, город, язык и время последующего наблюдения.
Разработчики могут получить базовую информацию пользователя через OpenID. Пожалуйста, используйте протокол HTTPS.
Мы можем взглянуть на официальную документацию: получение основной информации о пользователях.
Описание запроса на звонок интерфейса
HTTP -метод запроса: получить
https://api.weixin.qq.com/cgi-bin/user/info?access_token=access_token&openid=openid&lang=zh_cn
Описание параметра
| параметр | Это необходимо | иллюстрировать |
|---|---|---|
| access_token | да | Позвоните в учетные данные интерфейса |
| OpenID | да | Личность обычного пользователя уникальна для текущей официальной учетной записи |
| ланг | нет | Вернуться в страну и версию регионального языка, ZH_CN упростил китайский, ZH_TW традиционный китайский, на английском языке |
Вернуться к описанию
При нормальных обстоятельствах WeChat вернет следующий пакет JSON в официальный счет:
{«Подпишиться»: 1, «openID»: «o6_bmjrptlm6_2sgvt7hmzopfl2m», «Прозвище»: «группа», «Пол»: 1, «Язык»: «zh_cn», «Город»: «Гуанчжоу», «Гунс»: «Гуангдун», «Группа»: «Китайс»: «:»: «Китайс»: «:»: «Китай»: «:»: «Китай»: «Глава»: «Кфорт»: «Кфорта»: «КАНКАР»: «Глава»: «КАНКАР»: «КАРКОН». "http://wx.qlogo.cn/mmomopen/g3monuztnhkdmzicilibx6iafqac56vxlsufpb6n5wksyvy0chqkiajsgq1dzutogvllrhjberqq4emsv84aevhiaceqxibjxcfheble" 1382694957, "UnionId": "O6_BMASDASDSAD6_2SGVT7HMZOPFL" "замечание": "", "GroupId": 0}Описание параметра
| параметр | иллюстрировать |
|---|---|
| подписаться | Подписывается ли пользователь на официальный идентификатор учетной записи? Если значение равно 0, это означает, что пользователь не следовал официальной учетной записи и не может получить оставшуюся информацию. |
| OpenID | Идентификатор пользователя уникален для текущей официальной учетной записи |
| прозвище | Прозвище пользователя |
| секс | Пол пользователя, когда значение составляет 1, оно является мужчина |
| город | Город пользователя |
| страна | Пользовательская страна |
| провинция | Провинция, где находится пользователь |
| язык | Язык пользователя, упрощенный китайский |
| Headimgurl | Аватар пользователя, последнее значение представляет размер квадратного аватара (есть 0, 46, 64, 96 и 132 значения являются необязательными, а 0 представляет 640*640 квадратный аватар). Этот элемент пуст, когда у пользователя нет аватара. Если пользователь изменит аватар, оригинальный URL -аватар будет недействительным. |
| spize_time | Пользователь фокусируется на времени, как на временной метке. Если пользователь следовал за ним много раз, то последний раз следовать |
| UnionId | Это поле появится только после того, как пользователь связывает официальную учетную запись с учетной записью WeChat Open Platform. См.: Получение личной информации пользователя (механизм UnionID) |
| Примечание | Официальные записи операторов учетной записи для фанатов. Официальные операторы учетной записи могут добавить примечания к фанатам в интерфейсе управления пользователями WeChat Public Platform. |
| группа | Идентификатор группы пользователя |
Когда произойдет ошибка, WeChat вернет коды ошибок и другую информацию. Пример пакета JSON заключается в следующем (этот пример является неверной аппидной ошибкой):
{"errcode": 40013, "errmsg": "Invalid Appid"}На основе приведенной выше информации мы определяем класс информации пользователя для хранения основной информации пользователя.
Пакет com.souvc.weixin.pojo;/*** Имя класса: weixinuserinfo </br>* Описание: Основная информация пользователей WeChat </br>* Разработчик: souvc </br>* Время создания: 2015-11-27 </br>* Выпуск версии: v1.0 </br>*/public weixinfo {///reper restid; // Следуйте статусу (1 следующее, 0 не следует), оставшаяся информация не может быть получена, если не следовать частной подписке; // Пользователь следуйте времени, временной меткой. Если пользователь последовал много раз, потратьте последний раз, чтобы следовать частной строке подписки; // Прозвище частное псевдоним; // Пол Полу (1 - мужчина, 2 - женщина, 0 неизвестно) частный секс; // Страна пользователя частная строковая страна; // Пользовательская провинция частная строковая провинция; // пользовательский городской частный строковый город; // Язык пользователя, упрощенный китайский: 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 indifbibe; } public void setSubScribe (int indifbibe) {this.subscribe = specpibe; } public String getSubScribeTime () {return ntabribeTime; } public void setSubsCribeTime (String indiqueTime) {this.SubsCribeTime = nefficeTime; } public String getNickName () {return chicname; } public void setnickName (String Nickname) {this.nickName = никнам; } public int getSex () {return sex; } public void setsex (int sex) {this.sex = sex; } public String getCountry () {return страна; } 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 Language; } public void setlanguage (строковый язык) {this.language = language; } public String getheadimgurl () {return heatimgurl; } public void 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;/*** Имя класса: token </br>* Описание: учетные данные </br>* Разработчик: souvc </br>* Время создания: 2015-11-27 </br>* Версия для выпуска: v1.0 </br>*/public token {// ecoust accretents accestevents; // Период достоверности полномочий, единица: секунды Private Int истекает; public String getAccessToken () {return AccestToken; } public void setAccessToken (string accessToken) {this.accessToken = accessToken; } public int getExpiresIn () {return expiresIn; } public void setExpiresIn (int oxresin) {this.expiresin = expiresin; }} HTTPS -запрос, необходимый менеджер доверия.
Пакет com.souvc.weixin.util; import java.security.cert.certificateexception; импорт java.security.cert.x509certificate; импорт javax.net.ssl.x509trustmanager;/*** Имя класса: Myx509Tmanager </br>* Описание: управляющий доверием </br> 2015-11-27 </br> * Версия выпуска: v1.0 </br> */public class myx509trustmanager реализует x509trustmanager {// Проверка сертификата клиента public void checkclienttrusted String aithrype) бросает сертификацию {} // return rested x509certificate [] getAcceptedIssuers () {return null; }} Инкапсулировал публичный класс:
пакет com.souvc.weixin.util; import java.io.bufferedReader; import java.io.inputStream; импорт java.io.inputStreamReader; импорт java.io.outputStream; импорт java.io.unsupportedencodingexception; import java.net.connectexcept javax.net.ssl.httpsurlConnection; import javax.net.ssl.sslcontext; импорт javax.net.ssl.sslsocketfactory; import javax.net.ssl.trustmanager; импорт net.sf.json.jsonexception; импорт net.sf.json.jsonobject; импорт org.slf4j.logger; org.slf4j.LoggerFactory;import com.souvc.weixin.pojo.Token;/*** Class name: CommonUtil </br>* Description: General Tools Class</br>* Developer: souvc </br>* Creation time: 2015-11-27 </br>* Release version: V1.0 </br> */public class CommonUtil { private static Logger log = Loggerfactory.getlogger (commonutil.class); // получение учетных данных (GET) Общедоступная окончательная статическая строка token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret"; / ** * Отправить https request * * * @param RequestUrl Adderl Adderl * @param requestMethod Метод запроса (get, post) * @param outputstr. нулевой; try {// Создать объект sslContext и инициализировать TrustManager [] tm = {new MyX509TrustManager ()}; Sslcontext sslcontext = sslcontext.getInstance ("ssl", "sunjsse"); sslcontext.init (null, tm, new java.security.securerandom ()); // Получить объект sslSocketFactory из вышеуказанного объекта sslContext sslSocketFactory ssf = sslContext.getSocketFactory (); Url url = new URL (requestUrl); Httpsurlconnection conn = (httpsurlconnection) url.openconcenection (); conn.setsslsocketfactory (ssf); conn.setDoOutput (true); conn.setDoinput (true); conn.setusecaches (false); // Установить метод запроса (get/post) conn.setrequestmethod (requestmethod); // Записать данные в выходной поток if (null! = Outputstream) {outputStream outputStream = conn.getOutputStream (); // Обратите внимание на формат кодирования outputStream.write (outputStr.getBytes ("UTF-8")); outputStream.close (); } // Возвращение контента из входного потока inputStream inputStream = conn.getInputStream (); InputStreamReader InputStreamReader = new InputStreamReader (inputStream, "UTF-8"); BufferedReader BufferedReader = new BufferedReader (inputStreamReader); String str = null; StringBuffer Buffer = new StringBuffer (); while ((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 ("timeout timeout: {}", ce); } catch (Exception e) {log.Error ("https запрос Exception: {}", e); } return jsonObject; } / *** Получить учетные данные доступа к интерфейсу** @param Appid Credentials* @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); // Инициировать запрос получить запрос на получение учетных данных jsonObject jsonObject = httpsRequest (requestUrl, "get", null); if (null! = jsonObject) {try {token = new token (); token.setaccesstoken (jsonobject.getString ("access_token")); token.setexpiresin (jsonobject.getint ("oxry_in")); } catch (jsonexception e) {token = null; // не удалось получить токен log.error ("Не удалось получить токен errcode: {} errmsg: {}", jsonobject.getint ("errcode"), jsonobject.getString ("errmsg")); }} вернуть токен; } / ** * URL Encoding (UTF-8) * * @param Source * @return * / public Static String urlencodeutf8 (String Source) {String Result = Source; try {result = java.net.urlencoder.encode (источник, "UTF-8"); } catch (unsupportEncodingexception e) {e.printstacktrace (); } return Result; } / *** Определить расширение файла на основе типа контента** @param contentType Тип контента* @return* / public Static String getFileext (String contentType) {String fileExt = ""; if ("image/jpeg" .equals (contentType)) fileExt = ".jpg"; иначе if ("audio/mpeg" .equals (contentype)) fileext = ".mp3"; иначе if ("audio/amr" .equals (contentype)) fileext = ".amr"; else if ("video/mp4" .equals (contentType)) fileExt = ".mp4"; else if ("video/mpeg4" .equals (contentType)) fileext = ".mp4"; вернуть FileExt; }}Как получить базовую информацию пользователя:
/ *** Получить информацию пользователя** @param accesstoken recomnations access* @param openid идентификатор пользователя* @return weixinuserinfo*/ public static weixinuserinfo getuserinfo (string accesstoken, string openid) {weixinuserinfo weixinuserinfo = null; // Строка запроса 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); // Получить информацию пользователя jsonObject jsonObject = commonutil.httpsRequest (requestUrl, "get", null); if (null! = jsonObject) {try {weixinuserinfo = new weixinuserinfo (); // идентификатор пользователя weixinuserinfo.setopenid (jsonobject.getString ("openid")); // Следуйте статусу (1 следует за следующим, 0 не следует), оставшаяся информация не может быть получена, когда не следуйте weixinuserinfo.setsubscribe (jsonobject.getint ("Подписаться")); // Время внимания пользователя weixinuserinfo.setsubscribeTime (jsonObject.getString ("andcribe_time")); // Прозвище weixinuserinfo.setnickname (jsonobject.getString («Прозвище»)); // Пользовательский пол (1 мужчина, 2 - женщина, 0 неизвестно) weixinuserinfo.setsex (jsonobject.getint ("sex")); // страна пользователя weixinuserinfo.setcountry (jsonobject.getString («страна»)); // провинция пользователя weixinuserinfo.setprovince (jsonobject.getString ("провинция")); // Город пользователя weixinuserinfo.setCity (jsonObject.getString ("City")); // Язык пользователя, упрощенный китайский язык - zh_cn weixinuserinfo.setlanguage (jsonobject.getString ("language")); // пользователь avatar weixinuserinfo.setheadimgurl (jsonobject.getString ("Headimgurl")); } catch (Exception e) {if (0 == weixInuserInfo.getSubScribe ()) {log.Error ("user {} ensong", weixinuserInfo.getopenid ()); } else {int errorCode = jsonObject.getInt ("errCode"); String errorrmsg = jsonObject.getString ("errmsg"); log.error ("Не удалось получить информацию пользователя errcode: {} errmsg: {}", errorcode, errormsg); }}} вернуть weixinuserinfo; }Метод испытаний: Обратите внимание на замену следующего на ваш аппетный и секретный ключ.
public static void main (string args []) {// получить учетные данные доступа к интерфейсу string accessToken = commonutil.getToken ("xxxx", "xxxx"). getAccessToken (); / *** Получить информацию пользователя*/ weixinuserinfo user = 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 ("country:" + user.getCountry ()); System.out.println ("Провинция:" + user.getProvince ()); System.out.println ("City:" + 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/mmomopen/lozievyfca7azq7ckiamdpqicudngdec0nzb7zaljdl3tzfvfehwm1afquexnicnideh0iqytt0nrip06ibgg4w5wflasfffx9qib0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0
Приведенный выше контент представляет основную информацию пользователей в разработке WeChat Public Platform для реальной Java -версии WeChat. Я надеюсь, что эта статья будет полезна для вашей будущей работы и учебы. В то же время, спасибо за постоянную поддержку веб -сайта Wulin Network.