很多时候有意无意间,我们作为程序员,都会自己给自己挖坑。我也不例外,为了以后长点记性,我觉得还是记录下来比较好。俗话说:好记性不如烂笔头。现在的互联网时代,烂笔头或许被抛弃了,但是文档的存储却给了我们很大的优势。下面就来看看微信开发吧。
首先想要在微信上获取任何信息,都必须得到微信的敲门砖 code。
code 这个参数是微信传给我们的,我们要在网页里面获取code。
有了code,我们就进入了这个大门,就可以获取我们想要的openId。
下面我们来看一下代码
获取openId通过code 获取openId
MyLogUtils.getInstance().log("通过code换取网页授权access_token 》》》code:"+code); //通过code换取网页授权access_tokenString getToken ="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+Config.APPID+"&secret="+Config.APPSECRET+"&code="+code+"&grant_type=authorization_code";
String access_token =null;
try {
access_token = MyHttpUtils.getInstall().HttpPostRequest(getToken);
ObjectMapper objectMapper_access_token = new ObjectMapper();
MaptokenMap = objectMapper_access_token.readValue(access_token,new TypeReference>() {});
if(null != tokenMap.get("errmsg")){
// data.setErrMsg("授权登陆超时,请重新登陆");
return data;
}
String openid = (String) tokenMap.get("openid");
假如我们想要获取微信的用户信息,首先要获取基本支持的token 和 openId 这两个参数,因为token的失效时间是7200S,所以我们一般会选择存入数据库,2小时更新一次token。
获取基本支持的token
String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+Config.APPID+"&secret="+Config.APPSECRET; try {
String token = MyHttpUtils.getInstall().HttpPostRequest(url);
ObjectMapper jbtoken= new ObjectMapper();
Map jbMap = jbtoken.readValue(token,new TypeReference<Map<String,Object>>() {});
maps.put("token", jbMap.get("access_token"));
maps.put("expires_in", jbMap.get("expires_in"));
通过openId 和 基本支持的token 获取用户信息
String wxUserInfo = MyHttpUtils.getInstall().HttpPostRequest("https://api.weixin.qq.com/cgi-bin/user/info?access_token="+acctoken+"&openid="+openid+"&lang=zh_CN");
MyLogUtils.getInstance().log("获取到的微信用户信息:"+wxUserInfo);
ObjectMapper objectMapper_userInfo= new ObjectMapper();
Map<String,Object> userMap = objectMapper_userInfo.readValue(wxUserInfo,new TypeReference<Map<String,object>>() {});
String nickname = (String) userMap.get("nickname");
int sex = (Integer) userMap.get("sex");
String province = (String) userMap.get("province");
String city = (String) userMap.get("city");
String headimgurl = (String) userMap.get("headimgurl");等一些数据
网友评论