国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Applet WeChat Développement WeChat Explication détaillée et exemples d'obtention d'ACCESSTOKEN .Net pour le développement de la plateforme publique WeChat

Explication détaillée et exemples d'obtention d'ACCESSTOKEN .Net pour le développement de la plateforme publique WeChat

Mar 28, 2017 pm 02:48 PM

Cet article présente principalement les informations pertinentes sur la version Java pratique du développement de la plate-forme publique WeChat pour obtenir des informations de base sur les utilisateurs. Les amis dans le besoin peuvent s'y référer

Après que les abonnés interagissent avec le compte public pour générer des messages, le public Le compte peut obtenir l'OpenID du follower (ID WeChat crypté, l'OpenID de chaque utilisateur pour chaque compte officiel est unique. Pour différents comptes officiels, l'openid du même utilisateur est différent).

Les comptes officiels peuvent obtenir des informations utilisateur de base basées sur OpenID via cette interface , y compris le surnom, l'avatar, le sexe, la ville, la langue et l'heure d'attention

Les développeurs peuvent obtenir des informations utilisateur de base via OpenID. Veuillez utiliser le protocole https?: Obtenez des informations utilisateur de base. Description de la demande d'appel d'interface

Méthode de requête http?: GET

api.weixin.qq.com/cgi-bin/user/info ?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

Description du paramètre

Description du retour

參數(shù) 是否必須 說明
access_token 調(diào)用接口憑證
openid 普通用戶的標(biāo)識(shí),對(duì)當(dāng)前公眾號(hào)唯一
lang 返回國家地區(qū)語言版本,zh_CN 簡體,zh_TW 繁體,en 英語

Dans des circonstances normales, WeChat Le paquet de données JSON suivant sera renvoyé au compte public?:

Description du paramètre

?{
??"subscribe":?1,?
??"openid":?"o6_bmjrPTlm6_2sgVt7hMZOPfL2M",?
??"nickname":?"Band",?
??"sex":?1,?
??"language":?"zh_CN",?
??"city":?"廣州",?
??"province":?"廣東",?
??"country":?"中國",?
??"headimgurl":??"http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",?
??"subscribe_time":?1382694957,
??"unionid":?"?o6_bmasdasdsad6_2sgVt7hMZOPfL"
??"remark":?"",
??"groupid":?0
}
Si l'utilisateur s'abonne à l'ID de compte public. Lorsque la valeur est 0, cela signifie que l'utilisateur ne suit pas le compte public et ne peut pas extraire d'autres informations. Le sexe de l'utilisateur, lorsque la valeur est 1, il est masculin, lorsque la valeur est 2, il est féminin, lorsque la valeur est 0, il est inconnu td>headimgurlID de groupe
Paramètre Description
subscribe
openid L'identifiant de l'utilisateur, unique. au compte officiel actuel
surnom Le surnom de l'utilisateur
sexe
ville td> Ville de l'utilisateur
pays Pays de l'utilisateur
province td>
provinceProvince où se trouve l'utilisateur
langue La langue de l'utilisateur, le chinois simplifié est zh_CN
Avatar de l'utilisateur, la dernière valeur représente la taille de l'avatar carré (0, 46, 64, 96, 132 valeurs sont disponibles, 0 représente un avatar carré de 640*640), cet élément est utilisé lorsque l'utilisateur n'a pas d'avatar vide. Si l'utilisateur modifie son avatar, l'URL de l'avatar d'origine sera invalide.
subscribe_time Le temps d'attention de l'utilisateur est Horodatage

. Si l'utilisateur a suivi plusieurs fois, la dernière heure de suivi sera utilisée

unionid Seulement après que l'utilisateur ait lié le compte officiel à la plateforme ouverte WeChat compte, ce champ appara?t. Pour plus de détails, voir?:?Obtention des informations personnelles des utilisateurs (mécanisme UnionID)
remarque Remarques des opérateurs de compte public aux fans. Les opérateurs de compte public peuvent les publier sur. WeChat PlatformGestion des utilisateursinterface pour ajouter des notes aux fans
ID de groupe

錯(cuò)誤時(shí)微信會(huì)返回錯(cuò)誤碼等信息,JSON數(shù)據(jù)包示例如下(該示例為AppID無效錯(cuò)誤):

?{"errcode":40013,"errmsg":"invalid?appid"}

根據(jù)上面的信息,我們定義一個(gè)用戶信息類來存放用戶的基本信息。

package?com.souvc.weixin.pojo;
/**
*?類名:?WeixinUserInfo?</br>
*?描述:?微信用戶的基本信息?</br>
*?開發(fā)人員:?souvc?</br>
*?創(chuàng)建時(shí)間:?2015-11-27?</br>
*?發(fā)布版本:V1.0?</br>
?*/
public?class?WeixinUserInfo?{
??//?用戶的標(biāo)識(shí)
??private?String?openId;
??//?關(guān)注狀態(tài)(1是關(guān)注,0是未關(guān)注),未關(guān)注時(shí)獲取不到其余信息
??private?int?subscribe;
??//?用戶關(guān)注時(shí)間,為時(shí)間戳。如果用戶曾多次關(guān)注,則取最后關(guān)注時(shí)間
??private?String?subscribeTime;
??//?昵稱
??private?String?nickname;
??//?用戶的性別(1是男性,2是女性,0是未知)
??private?int?sex;
??//?用戶所在國家
??private?String?country;
??//?用戶所在省份
??private?String?province;
??//?用戶所在城市
??private?String?city;
??//?用戶的語言,簡體中文為zh_CN
??private?String?language;
??//?用戶頭像
??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?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?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(String?language)?{
????this.language?=?language;
??}
??public?String?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

根據(jù)分析,獲取用戶的基本信息需要一個(gè)token。

package?com.souvc.weixin.pojo;
/**
*?類名:?Token?</br>
*?描述:?憑證?</br>
*?開發(fā)人員:?souvc?</br>
*?創(chuàng)建時(shí)間:?2015-11-27?</br>
*?發(fā)布版本:V1.0?</br>
?*/
public?class?Token?{
??//?接口訪問憑證
??private?String?accessToken;
??//?憑證有效期,單位:秒
??private?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請(qǐng)求,需要的信任管理器

package?com.souvc.weixin.util;
import?java.security.cert.CertificateException;
import?java.security.cert.X509Certificate;
import?javax.net.ssl.X509TrustManager;
/**
*?類名:?MyX509TrustManager?</br>
*?描述:信任管理器?</br>
*?開發(fā)人員:?souvc?</br>
*?創(chuàng)建時(shí)間:?2015-11-27?</br>
*?發(fā)布版本:V1.0?</br>
?*/
public?class?MyX509TrustManager?implements?X509TrustManager?{
??//?檢查客戶端證書
??public?void?checkClientTrusted(X509Certificate[]?chain,?String?authType)?throws?CertificateException?{
??}
??//?檢查服務(wù)器端證書
??public?void?checkServerTrusted(X509Certificate[]?chain,?String?authType)?throws?CertificateException?{
??}
??//?返回受信任的X509證書數(shù)組
??public?X509Certificate[]?getAcceptedIssuers()?{
????return?null;
??}
}

封裝了一個(gè)公共類:

package?com.souvc.weixin.util;
import?java.io.BufferedReader;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java.io.OutputStream;
import?java.io.UnsupportedEncodingException;
import?java.net.ConnectException;
import?java.net.URL;
import?javax.net.ssl.HttpsURLConnection;
import?javax.net.ssl.SSLContext;
import?javax.net.ssl.SSLSocketFactory;
import?javax.net.ssl.TrustManager;
import?net.sf.json.JSONException;
import?net.sf.json.JSONObject;
import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;
import?com.souvc.weixin.pojo.Token;
/**
*?類名:?CommonUtil?</br>
*?描述:?通用工具類?</br>
*?開發(fā)人員:?souvc?</br>
*?創(chuàng)建時(shí)間:?2015-11-27?</br>
*?發(fā)布版本:V1.0?</br>
?*/
public?class?CommonUtil?{
??private?static?Logger?log?=?LoggerFactory.getLogger(CommonUtil.class);
??//?憑證獲取(GET)
??public?final?static?String?token_url?=?"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
??/**
???*?發(fā)送https請(qǐng)求
???*?
???*?@param?requestUrl?請(qǐng)求地址
???*?@param?requestMethod?請(qǐng)求方式(GET、POST)
???*?@param?outputStr?提交的數(shù)據(jù)
???*?@return?JSONObject(通過JSONObject.get(key)的方式獲取json對(duì)象的屬性值)
???*/
??public?static?JSONObject?httpsRequest(String?requestUrl,?String?requestMethod,?String?outputStr)?{
????JSONObject?jsonObject?=?null;
????try?{
??????//?創(chuàng)建SSLContext對(duì)象,并使用我們指定的信任管理器初始化
??????TrustManager[]?tm?=?{?new?MyX509TrustManager()?};
??????SSLContext?sslContext?=?SSLContext.getInstance("SSL",?"SunJSSE");
??????sslContext.init(null,?tm,?new?java.security.SecureRandom());
??????//?從上述SSLContext對(duì)象中得到SSLSocketFactory對(duì)象
??????SSLSocketFactory?ssf?=?sslContext.getSocketFactory();
??????URL?url?=?new?URL(requestUrl);
??????HttpsURLConnection?conn?=?(HttpsURLConnection)?url.openConnection();
??????conn.setSSLSocketFactory(ssf);
??????conn.setDoOutput(true);
??????conn.setDoInput(true);
??????conn.setUseCaches(false);
??????//?設(shè)置請(qǐng)求方式(GET/POST)
??????conn.setRequestMethod(requestMethod);
??????//?當(dāng)outputStr不為null時(shí)向輸出流寫數(shù)據(jù)
??????if?(null?!=?outputStr)?{
????????OutputStream?outputStream?=?conn.getOutputStream();
????????//?注意編碼格式
????????outputStream.write(outputStr.getBytes("UTF-8"));
????????outputStream.close();
??????}
??????//?從輸入流讀取返回內(nèi)容
??????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("連接超時(shí):{}",?ce);
????}?catch?(Exception?e)?{
??????log.error("https請(qǐng)求異常:{}",?e);
????}
????return?jsonObject;
??}
??/**
???*?獲取接口訪問憑證
???*?
???*?@param?appid?憑證
???*?@param?appsecret?密鑰
???*?@return
???*/
??public?static?Token?getToken(String?appid,?String?appsecret)?{
????Token?token?=?null;
????String?requestUrl?=?token_url.replace("APPID",?appid).replace("APPSECRET",?appsecret);
????//?發(fā)起GET請(qǐng)求獲取憑證
????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;
????????//?獲取token失敗
????????log.error("獲取token失敗?errcode:{}?errmsg:{}",?jsonObject.getInt("errcode"),?jsonObject.getString("errmsg"));
??????}
????}
????return?token;
??}
??/**
???*?URL編碼(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;
??}
??/**
???*?根據(jù)內(nèi)容類型判斷文件擴(kuò)展名
???*?
???*?@param?contentType?內(nèi)容類型
???*?@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";
????return?fileExt;
??}
}

獲取用戶基本信息的方法:

/**
???*?獲取用戶信息
???*?
???*?@param?accessToken?接口訪問憑證
???*?@param?openId?用戶標(biāo)識(shí)
???*?@return?WeixinUserInfo
???*/
??public?static?WeixinUserInfo?getUserInfo(String?accessToken,?String?openId)?{
????WeixinUserInfo?weixinUserInfo?=?null;
????//?拼接請(qǐng)求地址
????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();
????????//?用戶的標(biāo)識(shí)
????????weixinUserInfo.setOpenId(jsonObject.getString("openid"));
????????//?關(guān)注狀態(tài)(1是關(guān)注,0是未關(guān)注),未關(guān)注時(shí)獲取不到其余信息
????????weixinUserInfo.setSubscribe(jsonObject.getInt("subscribe"));
????????//?用戶關(guān)注時(shí)間
????????weixinUserInfo.setSubscribeTime(jsonObject.getString("subscribe_time"));
????????//?昵稱
????????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("language"));
????????//?用戶頭像
????????weixinUserInfo.setHeadImgUrl(jsonObject.getString("headimgurl"));
??????}?catch?(Exception?e)?{
????????if?(0?==?weixinUserInfo.getSubscribe())?{
??????????log.error("用戶{}已取消關(guān)注",?weixinUserInfo.getOpenId());
????????}?else?{
??????????int?errorCode?=?jsonObject.getInt("errcode");
??????????String?errorMsg?=?jsonObject.getString("errmsg");
??????????log.error("獲取用戶信息失敗?errcode:{}?errmsg:{}",?errorCode,?errorMsg);
????????}
??????}
????}
????return?weixinUserInfo;
??}

測試的方法:注意將以下替換為自己的appid和秘鑰。

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("關(guān)注狀態(tài):"?+?user.getSubscribe());
????System.out.println("關(guān)注時(shí)間:"?+?user.getSubscribeTime());
????System.out.println("昵稱:"?+?user.getNickname());
????System.out.println("性別:"?+?user.getSex());
????System.out.println("國家:"?+?user.getCountry());
????System.out.println("省份:"?+?user.getProvince());
????System.out.println("城市:"?+?user.getCity());
????System.out.println("語言:"?+?user.getLanguage());
????System.out.println("頭像:"?+?user.getHeadImgUrl());
??}

效果如下:

OpenID:ooK-yuJvd9gEegH6nRIen-gnLrVw
關(guān)注狀態(tài):1
關(guān)注時(shí)間:1449021142
昵稱:風(fēng)少
性別:1
國家:中國
省份:廣東
城市:廣州
語言:zh_CN
頭像:http://wx.qlogo.cn/mmopen/lOZIEvyfCa7aZQ7CkiamdpQicUDnGDEC0nzb7ZALjdl3TzFVFEHWM1AFqEXnicNIDeh0IQYTt0NrIP06ibg4W5WflASfFfX9qqib0/0

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276