フォロワーが公式アカウントと対話した後、公式アカウントは次のようなOpenIDを取得できます(暗号化されたWeChatアカウントでは、各ユーザーの公式アカウントの各ユーザーのOpenIDは一意です。異なる公式アカウントの場合、同じユーザーのOpenIDは異なります)。
公式アカウントは、ニックネーム、アバター、性別、都市、言語、フォローアップ時間など、このインターフェイスを通じてOpenIDに基づいて基本的なユーザー情報を取得できます。
開発者は、OpenIDを介して基本的なユーザー情報を取得できます。 HTTPSプロトコルを使用してください。
公式ドキュメント:ユーザーに関する基本情報を取得することを確認できます。
インターフェイスコールリクエストの説明
HTTPリクエスト方法:get
https://api.weixin.qc.com/cgi-bin/user/info?access_token=access_token&openid=openid&lang=zh_cn
パラメーターの説明
| パラメーター | 必要ですか | 説明します |
|---|---|---|
| Access_token | はい | インターフェイス資格情報を呼び出します |
| OpenID | はい | 通常のユーザーの身元は、現在の公式アカウントに固有のものです |
| ラング | いいえ | 国と地域の言語バージョンに戻る、zh_cn単純化された中国語、zh_tw伝統的な中国語、en英語 |
説明に戻ります
通常の状況では、WeChatは次のJSONパケットを公式アカウントに返します。
{"subscribe":1、 "openid": "o6_bmjrptlm6_2sgvt7hmzopfl2m"、 "nickname": "band"、 "sex":1、 "language": "zh_cn"、 "city": "guangzhou"、 "begince": "country" ":" countr "http://wx.qlogo.cn/mmopen/g3monuztnhkdmzicilibx6iafqac56vxlsufpb6n5wksyvy0chqkkiajsgq1dzutogvllrhjberqq4emsv884evhiaceqxibjxcfbe" "" "" " 1382694957、 "Unionid": "o6_bmasdasdsad6_2sgvt7hmzopfl" "areme": ""、 "groupid":0}パラメーターの説明
| パラメーター | 説明します |
|---|---|
| 購読する | ユーザーが公式アカウントIDに購読するかどうか?値が0の場合、ユーザーが公式アカウントに従っていないことを意味し、残りの情報を取得できません。 |
| OpenID | 現在の公式アカウントに固有のユーザーID |
| ニックネーム | ユーザーのニックネーム |
| セックス | ユーザーの性別、値が1の場合、それは男性であり、値が2の場合、それは女性であり、値が0の場合、それは不明です |
| 市 | ユーザーの都市 |
| 国 | ユーザー国 |
| 州 | ユーザーが配置されている州 |
| 言語 | ユーザーの言語、単純化された中国語はZh_cnです |
| headimgurl | ユーザーのアバター、最後の値は正方形のアバターのサイズを表します(0、46、64、96、および132の値はオプションで、0は640*640平方アバターを表します)。このアイテムは、ユーザーにアバターがないときに空です。ユーザーがアバターを変更すると、元のアバターURLが無効になります。 |
| subscribe_time | ユーザーは、タイムスタンプとして時間に焦点を合わせます。ユーザーが何度もそれをフォローしている場合、最後にフォローする |
| Unionid | このフィールドは、ユーザーが公式アカウントをWeChatオープンプラットフォームアカウントにバインドした後にのみ表示されます。参照:ユーザーの個人情報の取得(UnionIDメカニズム) |
| 述べる | ファンへの公式アカウントオペレーターのメモ。公式アカウントオペレーターは、WeChat Public Platformユーザー管理インターフェイスのファンにメモを追加できます。 |
| GroupId | ユーザーのグループID |
エラーが発生すると、WeChatはエラーコードやその他の情報を返します。 JSONパケットの例は次のとおりです(この例は無効なAPPIDエラーです):
{"errcode":40013、 "errmsg": "無効なappid"}上記の情報に基づいて、ユーザーの基本情報を保存するユーザー情報クラスを定義します。
パッケージcom.souvc.weixin.pojo;/***クラス名:weixinuserinfo </br>*説明:wechatユーザーの基本情報</br>*開発者:Souvc </br>*作成時間:2015-11-27 </br>*リリースバージョン:v1.0 </br> //ステータスをフォローします(1はフォローしています、0はフォローしていません)、プライベートINTサブスクライブに従わない場合、残りの情報は取得できません。 //ユーザーはタイムスタンプである時間に従います。ユーザーが何度もフォローしている場合は、最後の時間をかけてプライベート文字列subscribeTimeをフォローしてください。 //ニックネームプライベート文字列ニックネーム。 //ユーザーの性別(1は男性、2は女性、0は不明です)プライベートINTセックス。 //ユーザーの国のプライベートストリングカントリー。 //ユーザーの州のプライベートストリング州。 //ユーザーの都市プライベートストリングシティ。 //ユーザーの言語、単純化された中国語:Zh_cnプライベート文字列言語。 //ユーザーのアバタープライベート文字列headimgurl; public string getopenid(){return openid; } public void setopenid(string openid){this.openid = openID; } public int getSubscribe(){return subscribe; } public void setSubscribe(int subscribe){this.subscribe = subscribe; } public string getsubscribetime(){return subscribetime; } public void setSubscribeTime(String subscribetime){this.subscribetime = subscribetime; } public string getnickname(){return nickname; } public void setnickname(string nickname){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 vernce; } public void setProvince(String vernicing){this.province = unter; } public string getCity(){return City; } public void setCity(String City){this.city = city; } public string getLanguage(){return言語; } public void setlanguage(string language){this.language = language; } public string getheadimgurl(){return headimgurl; } public void setheadimgurl(string headimgurl){this.headimgurl = headimgurl; }}まず、ユーザー情報を取得するためのインターフェイスを見てみましょう。
https://api.weixin.qc.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 class token {// Interface Access Access Private String Accesstoken; //資格情報の妥当性期間、ユニット:秒のプライベートINT Expiresin; public string getAccesStoken(){return AccessToken; } public void setAccesStoken(String AccessToken){this.accessToken = accessToken; } public int getExpiresin(){return expiresin; } public void setexpiresin(int expiresin){this.expiresin = expiresin; }} HTTPSリクエスト、信頼マネージャーが必要です
パッケージcom.souvc.weixin.util; import java.security.cert.certificateException; Import java.security.cert.x509certificate; Import javax.net.ssl.xx509Trustmanager;時間:2015-11-27 </br> *リリースバージョン:v1.0 </br> */public class myx509trustmanagerはx509trustmanager {//クライアント証明書public checkclienttrusted(x509certificate []チェーン、文字列authtype)をチェックします。チェーン、string authtype)Sthrows cermogteexception {} //信頼できるx509certificate [] getCeptedissuers(){return null; }}公開クラスをカプセル化しました:
パッケージcom.souvc.weixin.util; import java.io.bufferedreader; Import java.io.inputStream; Impate java.io.inputStreamReader; Import java.outputStream; Import java.io.io.UnsuportedenCodingexception; Import.net.net.net.net.connectexception; javax.net.ssl.httpsurlconnection; Import javax.net.ssl.sslcontext; Import javax.net.net.ssl.sslsocketFactory; Import javax.net.ssl.trustmanager; Import net.sf.json.jsonectiption; org.slf4j.logger; Import org.slf4j.loggerfactory; Import com.souvc.weixin.pojo.token;/***クラス名:Commonutil </br>*説明:一般ツール</br>*開発者:Souvc </br>*作成時間:2015-11-27 </br> {private static logger log = loggerfactory.getLogger(commonutil.class); //資格情報の取得(取得)パブリック最終的な静的文字列token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type = crient_credential&appid=appid&secret = appsecret"; / ** * https request * * @param requesturl requestアドレス * @param requestmethod request method(get、post) * @param outputstrデータ送信 * @return jsonobject(jsonobject.get(key)を介してjsonオブジェクトの属性値を取得) jsonObject = null; 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.openconnection(); conn.setslsocketFactory(SSF); conn.setDoOutput(true); conn.setDoinput(true); conn.setusecaches(false); // requestメソッド(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);文字列str = null; stringbuffer buffer = new StringBuffer(); while((str = bufferedreader.readline())!= null){buffer.append(str); } // Resource 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 request例外:{}"、e); } jsonobjectを返します。 } / ***インターフェイスアクセス資格情報を取得** @param appid資格情報* @param appsecret key* @return* / public staticトークンgettoken(string appid、string appsecret){token token = null; string requesturl = token_url.replace( "appid"、appid).replace( "appsecret"、appsecret); //資格情報を取得するためのGETリクエストを開始jsonObject jsonobject = httpsRequest(requesturl、 "get"、null); if(null!= jsonobject){try {token = new Token(); token.SetAccesToken(jsonObject.getString( "Access_Token")); token.setexpiresin(jsonobject.getint( "expires_in")); } catch(jsonexception e){token = null; // token log.errorを取得できませんでした( "token errcode:{} errmsg:{}"、jsonobject.getint( "errcode")、jsonobject.getString( "errmsg")); }} tokenを返します。 } / ** * url encoding(utf-8) * * @param source * @return * / public static string urlencodeutf8(string source){string result = source; try {result = java.net.urlencoder.encode(source、 "utf-8"); } catch(unsupportedencodingexception e){e.printstacktrace(); } return result; } / ***コンテンツタイプに基づいてファイル拡張子を決定** @param contentTypeコンテンツタイプ* @return* / public static string getFileExt(string contentType){string fileext = ""; if( "image/jpeg" .equals(contentType))fileext = ".jpg"; else if( "audio/mpeg" .equals(contentType))fileext = ".mp3"; else if( "audio/amr" .equals(contentType))fileext = ".amr"; else if( "video/mp4" .equals(contentType))fileext = ".mp4"; else if( "video/mpeg4" .equals(contentType))fileext = ".mp4"; fileExtを返します。 }}基本的なユーザー情報を取得する方法:
/ ***ユーザー情報の取得** @param AccessTokenインターフェイスアクセス資格情報//スプライスリクエストアドレス文字列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(); //ユーザーID weixinuserinfo.setopenid(jsonobject.getString( "openID")); //ステータスをフォローします(1はフォローしています、0はフォローしていません)、Weixinuserinfo.setSubscribe(jsonobject.getint( "subscribe"))をフォローしない場合、残りの情報は取得できません。 //ユーザーの注意時間// nickname weixinuserinfo.setnickname(jsonobject.getString( "nickname")); //ユーザージェンダー(1は男性、2は女性、0は不明です)weixinuserinfo.setsex(jsonobject.getint( "sex")); //ユーザーの国weixinuserinfo.setcountry(jsonobject.getString( "country")); //ユーザーの州weixinuserinfo.setprovince(jsonobject.getString( "province")); //ユーザーの都市weixinuserinfo.setcity(jsonobject.getString( "city")); //ユーザーの言語、単純化された中国語はZh_cn weixinuserinfo.setlanguage(jsonobject.getString( "言語")); // user avatar weixinuserinfo.setheadimgurl(jsonobject.getString( "headimgurl")); } catch(Exception e){if(0 == weixinuserinfo.getSubscribe()){log.Error( "user {} unsong"、weixinuserinfo.getopenid()); } else {int errorcode = jsonobject.getint( "errcode"); string errormsg = jsonobject.getString( "errmsg"); log.error( "ユーザー情報の取得に失敗しましたerrcode:{} errmsg:{}"、errorcode、errormsg); }}} weixinuserinfoを返します。 }テスト方法:次のことをAppIDおよびSecretキーに置き換えるように注意してください。
public static void main(string args []){//インターフェイスアクセス資格情報を取得するstring accesstoken = commonutil.getToken( "xxxx"、 "xxxx")。getAccestoken(); / ***ユーザー情報を取得*/ weixinuserinfo user = getUserInfo(accessToken、 "OOK-YUJVD9GEEGH6NRIEN-GNLRVW"); system.out.println( "openID:" + user.getopenid()); system.out.println( "Status:" + user.getSubscribe()); system.out.println( "follow time:" + user.getSubscribeTime()); system.out.println( "nickname:" + user.getnickname()); System.out.println( "gender:" + user.getSex()); System.out.println( "country:" + user.getCountry()); system.out.println( "province:" + 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
ニックネーム:風水性別:1
国:中国州:広州市:広州言語:Zh_cn
avatar:http://wx.qlogo.cn/mmopen/lozievyfca7azq7ckiamdpqicudngdec0nzb7zaljdl3tzfvfehwm1afqexnicnideh0iqytt0nrip06ibg4w5wflasffx9qqib0/0
上記のコンテンツは、WeChatの実際のJavaバージョン用のWeChatパブリックプラットフォームの開発において、ユーザーの基本情報を紹介します。この記事の共有があなたの将来の仕事と勉強に役立つことを願っています。同時に、Wulin Network Webサイトへの継続的なサポートに感謝します。