بعد تفاعل المتابعين مع الحساب الرسمي ، يمكن للحساب الرسمي الحصول على OpenID التالي (حساب WeChat المشفر ، OpenID لكل مستخدم لكل حساب رسمي فريد من نوعه. بالنسبة لحسابات رسمية مختلفة ، فإن نفس المستخدم 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 الصينية التقليدية ، en الإنجليزية |
العودة إلى الوصف
في ظل الظروف العادية ، ستعيد WeChat حزمة JSON التالية إلى الحساب الرسمي:
{"اشتراك": 1 ، "OpenId": "O6_BMJRPTLM6_2SGVT7HMZOPFL2M" ، "NEMNAME": "Band" ، "Sex": 1 ، "language": "http://wx.qlogo.cn/mmopen/g3monuztnhkdmzicilibx6iafqac56vxlsufpb6n5wksyvy0chqkiajsgq1dzutogvllrhjberq4emsv84eavhiaiCeqiCijsgq1dzutogvllrhjberq4emsv84eavhiaqiCeqiCeqcfhe/0 1382694957 ، "UnionId": "O6_BMASDASDASAD6_2SGVT7HMZOPFL" "ملاحظة": "" ، "GroupID": 0}وصف المعلمة
| المعلمة | يوضح |
|---|---|
| يشترك | ما إذا كان المستخدم يشترك في معرف الحساب الرسمي؟ إذا كانت القيمة 0 ، فهذا يعني أن المستخدم لم يتبع الحساب الرسمي ولا يمكنه سحب المعلومات المتبقية. |
| OpenID | معرف المستخدم فريد من نوعه للحساب الرسمي الحالي |
| كنية | لقب المستخدم |
| الجنس | جنس المستخدم ، عندما تكون القيمة 1 ، تكون ذكرًا ، عندما تكون القيمة 2 ، فهي أنثى ، وعندما تكون القيمة 0 ، تكون غير معروفة |
| مدينة | مدينة المستخدم |
| دولة | بلد المستخدم |
| مقاطعة | المقاطعة التي يوجد بها المستخدم |
| لغة | لغة المستخدم ، الصينية المبسطة هي ZH_CN |
| Headimgurl | تمثل القيمة الأخيرة للمستخدم ، القيمة الأخيرة حجم الصورة الرمزية المربعة (هناك 0 و 46 و 64 و 96 و 132 قيمًا اختيارية ، و 0 تمثل 640*640 مربع الصورة الرمزية). هذا العنصر فارغ عندما لا يكون للمستخدم الصورة الرمزية. إذا قام المستخدم بتغيير الصورة الرمزية ، فسيكون عنوان URL الأصلي Avatar غير صالح. |
| اشتراك | يركز المستخدم على الوقت ، كطابع زمني. إذا كان المستخدم قد تابعه عدة مرات ، فإن آخر مرة يتبعها |
| Unionid | لن يظهر هذا الحقل إلا بعد أن يربط المستخدم الحساب الرسمي لحساب WeChat Open Platform. انظر: الحصول على معلومات شخصية المستخدم (آلية UnionId) |
| ملاحظة | ملاحظات مشغلي الحساب الرسمية للجماهير. يمكن لمشغلي الحسابات الرسمية إضافة ملاحظات إلى المعجبين في واجهة إدارة مستخدم Wechat Public Platform. |
| مجموعة | معرف المجموعة للمستخدم |
عند حدوث خطأ ، ستعيد WeChat رموز الخطأ والمعلومات الأخرى. مثال حزمة JSON كما يلي (هذا المثال هو خطأ في Appid غير صالح):
{"errcode": 40013 ، "errmsg": "invalid appid"}استنادًا إلى المعلومات المذكورة أعلاه ، نحدد فئة معلومات المستخدم لتخزين المعلومات الأساسية للمستخدم.
حزمة com.souvc.weixin.pojo ؛/*** اسم الفئة: weixinuserInfo </br>* الوصف: المعلومات الأساسية لمستخدمي WeChat </br>* المطور: Souvc </br> وقت إنشاء سلسلة: 2015-11-27 </br> الإصدار: v1.0 </br>*/public class weixinfo // اتبع الحالة (1 يتبع ، 0 لا يتبع) ، لا يمكن الحصول على معلومات متبقية عند عدم اتباع اشتراك int الخاص ؛ // متابعة المستخدم الوقت ، طابع زمني. إذا كان المستخدم قد اتبع عدة مرات ، خذ آخر مرة لمتابعة مشترك السلسلة الخاصة ؛ // لقب لقب السلسلة الخاصة ؛ // جنس المستخدم (1 هو ذكر ، 2 أنثى ، 0 غير معروف) الجنس int الخاص ؛ // البلد الخاص بالسلسلة الخاصة. // مقاطعة المقاطعة الخاصة بالمستخدم ؛ // City's City Private String City ؛ // لغة المستخدم ، الصينية المبسطة: ZH_CN لغة السلسلة الخاصة ؛ // user avatar private String Headimgurl ؛ السلسلة العامة getOpenId () {return OpenId ؛ } public void setOpenId (String OpenId) {this.openId = openId ؛ } public int getSubScribe () {return subscribe ؛ } public void setSubScribe (int int) {this.subscribe = اشتراك ؛ } السلسلة العامة getSubScribeTime () {return cumpetrime ؛ } public void setSubScribeTime (سلسلة المشتركين) {this.subscribetime = subsistrime ؛ } السلسلة العامة getNickName () {return labes. } public void setNickName (سلسلة لقب) {this.nickName = nablemed ؛ } public int getSex () {return sex ؛ } public void setSex (int sex) {this.sex = sex ؛ } السلسلة العامة getCountry () {return Country ؛ } public void setCountry (String Country) {this.country = country ؛ } السلسلة العامة getProvince () {Return Province ؛ } public void setProvince (String Province) {this.province = Province ؛ } السلسلة العامة getCity () {return City ؛ } public void setCity (String City) {this.city = City ؛ } السلسلة العامة getLanguage () {return language ؛ } public void setLanguage (string language) {this.language = language ؛ } السلسلة العامة getheadimgurl () {return Headimgurl ؛ } 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
وفقًا للتحليل ، مطلوب رمز للحصول على المعلومات الأساسية للمستخدم.
Package com.souvc.weixin.pojo ؛/*** اسم الفئة: الرمز المميز </br>* الوصف: بيانات الاعتماد </br>* المطور: Souvc </br>* وقت الإنشاء: 2015-11-27 </br> الإصدار: v1.0 </br>*/class public token {// واجهة Accuse Creditoken الخاصة ؛ // فترة صحة بيانات الاعتماد ، الوحدة: ثواني int private EnpireSin ؛ السلسلة العامة 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 ، مطلوب مدير الثقة
package com.souvc.weixin.util ؛ استيراد java.security.cert.certificateException ؛ استيراد java.security.cert.x509certificate ؛ استيراد javax.net.ssl.x509trustmanager ؛/*** اسم الفئة: myx509trustmanager </br>* description: 2015-11-27 </br> إصدار الإصدار: v1.0 </br> *//الفئة العامة myx509trustmanager تنفذ x509trustmanager {// تحقق من شهادة العميل الفراغ العام سلسلة ، سلسلة AuthType) يلقي CertificateException {} // إرجاع X509Certificate الموثوق بها [] getAcceptEdissuers () {return null ؛ }} تغليف الطبقة العامة:
package com.souvc.weixin.util ؛ استيراد java.io.bufferedreader ؛ استيراد java.io.inputstream ؛ استيراد java.io.inputstreamreader ؛ استيراد java.io.outputstream ؛ import java.io.unsupportedencsexce ؛ javax.net.ssl.httpsurlConnection ؛ import javax.net.ssl.sslcontext org.slf4j.logger ؛ استيراد org.slf4j.loggerfactory ؛ استيراد com.souvc.weixin.pojo سجل لوجبر ثابت خاص = 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 عنوان طلب * param requestmethod method (get ، post) باطل؛ حاول {// إنشاء كائن 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 = url new url (requesturl) ؛ httpsurlConnection conn = (httpsurlConnection) url.openconnection () ؛ conn.setsslsocketfactory (SSF) ؛ conn.setDooutput (صواب) ؛ conn.setDoInput (صواب) ؛ conn.setuseCaches (false) ؛ // قم بتعيين طريقة الطلب (get/post) conn.setRequestMethod (requestMethod) ؛ // اكتب البيانات إلى دفق الإخراج إذا (null! = outputStream) {outputStream outputStream = conn.getOutputStream () ؛ // انتبه إلى تنسيق الترميز outputStream.write (OutputStR.GetBytes ("UTF-8")) ؛ outputStream.Close () ؛ } // محتوى الإرجاع من إدخال دفق الإدخال inputStream = conn.getInputStream () ؛ inputStreamReader inputStreamReader = جديد inputStreamReader (inputStream ، "UTF-8") ؛ BufferredReader BufferedReader = جديد BufferEdReader (inputStreamReader) ؛ سلسلة str = null ؛ StringBuffer Buffer = new StringBuffer () ؛ بينما ((str = bufferedReader.ReadLine ())! = null) {buffer.append (str) ؛ } // إطلاق المورد bufferredreader.close () ؛ inputStreamReader.Close () ؛ inputStream.Close () ؛ inputStream = null ؛ Conn.Disconnect () ؛ jsonobject = jsonobject.fromObject (buffer.toString ()) ؛ } catch (connectexception ce) {log.error ("connect timeout: {}" ، ce) ؛ } catch (استثناء e) {log.error ("استثناء طلب https: {}" ، e) ؛ } إرجاع jsonobject ؛ } / *** احصل على بيانات اعتماد الوصول إلى الواجهة** param appid بيانات الاعتماد* param appSecret Key* @return* / public static tokenoken (string appid ، string appsecret) {token token = null ؛ 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 ("Expires_in")) ؛ } catch (jsonexception e) {token = null ؛ // فشل في الحصول على الرمز المميز log.error ("فشل في الحصول على رمز errcode: {} errmsg: {}" ، jsonobject.getint ("errcode") ، jsonobject.getString ("errmsg")) ؛ }} الرمز المميز للعودة ؛ } / ** * url الترميز (UTF-8) * * param source * @REGANTURN * / public static string urlencodeutf8 (مصدر السلسلة) {string result = source ؛ حاول {result = java.net.urlencoder.encode (المصدر ، "UTF-8") ؛ } catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛ } نتيجة الإرجاع ؛ } / *** تحديد ملحق الملف استنادًا إلى نوع المحتوى** param contentType type* regurn* / public static string getFileSte (string contentType) {string filext = "" ؛ if ("image/jpeg" .equals (contentType)) filext = ".jpg" ؛ آخر إذا ("الصوت/mpeg" .equals (contentType)) filext = ".mp3" ؛ آخر إذا ("الصوت/AMR" .equals (contentType)) filext = ".amr" ؛ آخر إذا ("video/mp4" .equals (contentType)) filext = ".mp4" ؛ آخر إذا ("video/mpeg4" .equals (contentType)) filext = ".mp4" ؛ إرجاع filext ؛ }}كيفية الحصول على معلومات المستخدم الأساسية:
/ *** احصل على معلومات المستخدم** param accesstoken واجهة الوصول إلى بيانات الاعتماد* param openID معرف المستخدم* @renturn weixinuserinfo*/ public static weixinuserinfo getUserInfo (string accessToken ، string openId) // slose request request request 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 ("cumpcribe_time")) ؛ // لقب weixinuserinfo.setnickname (jsonobject.getString ("لقب")) ؛ // جنس المستخدم (1 هو ذكر ، 2 هو أنثى ، 0 غير معروف) weixinuserinfo.setsex (jsonobject.getint ("sex")) ؛ // بلد المستخدم WeixinuserInfo.setCountry (jsonobject.getString ("Country")) ؛ // مقاطعة المستخدم WeixinuserInfo.setProvince (jsonobject.getString ("المقاطعة")) ؛ // City's City WeixinuserInfo.setCity (jsonobject.getString ("City")) ؛ // لغة المستخدم ، الصينية المبسطة هي ZH_CN WeixinuserInfo.SetLanguage (jsonobject.getString ("لغة")) ؛ // user avatar weixinuserinfo.setheadimgurl (jsonobject.getString ("Headimgurl")) ؛ } catch (استثناء e) {if (0 == weixinuserInfo.getSubscribe ()) {log.error ("user {} unsong" ، weixinuserinfo.getopenid ()) ؛ } آخر {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 user = getUserInfo (AccessToken ، "Ook-yujvd9gegh6nrien-gnlrvw") ؛ System.out.println ("OpenId:" + user.getOpenId ()) ؛ System.out.println ("متابعة الحالة:" + user.getSubScribe ()) ؛ System.out.println ("متابعة الوقت:" + user.getSubScribetime ()) ؛ System.out.println ("lamname:" + 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-yujvd9geghe6nrien-Gnlrvw
حالة الاهتمام: 1
متابعة الوقت: 1449021142
لقب: جنس فنغ شاو: 1
البلد: مقاطعة الصين: مدينة قوانغدونغ: قوانغتشو اللغة: ZH_CN
Avatar: http://wx.qlogo.cn/mmopen/lozievyfca7azq7ckiamdpqucudngdec0nzb7zaljdl3tzffffehwm1afqexnideh0iqyt0nrip06ibgw5wfffx9qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqialA
يقدم المحتوى أعلاه المعلومات الأساسية للمستخدمين في تطوير منصة WeChat العامة لإصدار Java الفعلي من WeChat. آمل أن تكون مشاركة هذه المقالة مفيدة لعملك ودراستك المستقبلية. في الوقت نفسه ، شكرًا لك على دعمكم المستمر لموقع Wulin Network.