導航:首頁 > 編程語言 > java獲取微信用戶

java獲取微信用戶

發布時間:2023-09-20 21:33:09

⑴ 微信支付成功後返回postData xml 用戶信息java怎麼獲取

java有dom4j 去解析xml。


publicstaticMap<String,String>parseXml(HttpServletRequestrequest)
throwsException{
//解析結果存儲在HashMap
Map<String,String>map=newHashMap<String,String>();
InputStreaminputStream=request.getInputStream();
//讀取輸入流
SAXReaderreader=newSAXReader();
Documentdocument=reader.read(inputStream);
//得到xml根元素
Elementroot=document.getRootElement();
//得到根元素的所有子節點
List<Element>elementList=root.elements();

//遍歷所有子節點
for(Elemente:elementList)
map.put(e.getName(),e.getText());

//釋放資源
inputStream.close();
inputStream=null;

returnmap;
}

後面取值不用我寫了把。Map類型

⑵ javaopenid換微信昵稱

小程序前端 app.js

wx.login({

success: res => {

// 發送 res.code 到後台換取 openId, sessionKey, unionId

if(res.code){

wx.getUserInfo({

success: function(res_user){

wx.request({

url: 'http://192.168.xx.xx:8080/test/v1/getOpenId', //這里是本地請求路徑,可以寫你自己的本地路徑,也可以寫線上環境

data: {

code: res.code,//獲取openid的話 需要向後台傳遞code,利用code請求api獲取openid

hearl: res_user.userInfo.avatarUrl,//這些是用戶的基本信息

nickname:res_user.userInfo.nickName,//獲取昵稱

sex:res_user.userInfo.gender,//獲取性別

country: res_user.userInfo.country,//獲取國家

province: res_user.userInfo.province,//獲取省份

city: res_user.userInfo.city//獲取城市

},

success: function(res){

wx.setStorageSync("openid", res.data)//可以把openid保存起來,以便後期需求的使用

}

})

}

})

}

}

})

一些詳細的參數請參考微信api:https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html#wxgetuserinfoobject

下來就是Java 上面這是controller,其中有些地方也是取別人的優點寫的

@ResponseBody
@RequestMapping(value = "/getOpenId", method = RequestMethod.GET) // 獲取用戶信息
public String getOpenId(@Param("code") String code, @RequestParam("hearl") String hearl,
@RequestParam("nickname") String nickname, @RequestParam("sex") String sex,
@RequestParam("country") String country, @RequestParam("province") String province,
@RequestParam("city") String city) {
String WX_URL = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code";
try {
if (StringUtils.isBlank(code)) {
System.out.println("code為空");
} else {
String requestUrl = WX_URL.replace("APPID", WxConfig.APPID).replace("SECRET", WxConfig.APPSECRECT)
.replace("JSCODE", code).replace("authorization_code", WxConfig.GRANTTYPE);
JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "GET", null);
if (jsonObject != null) {
try {
// 業務操作
String openid = jsonObject.getString("openid");
wechatService.selectUserByOpenId(openid, hearl, nickname, sex, country, province, city);
return openid;
} catch (Exception e) {
System.out.println("業務操作失敗");
e.printStackTrace();
}
} else {
System.out.println("code無效");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "錯誤";
} //可能代碼復制過來,錯位了,你們自己格式化一下吧。
登錄後復制

首先獲取openid根據文檔需要訪問一個https介面 如下:

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

appid是你小程序的appid,secret是你小程序的appsercet,js_code是前台登陸成功後返回給你的code,grant_type為固定值authorization_code.

appid跟secret的查看在微信公眾平台:https://mp.weixin.qq.com/

注意:appid跟secret只有小程序的管理員可以看到,如果只是有許可權的話,還是看不到,必須管理員掃碼才可以看到,進去之後就在 設置→→→開發設置

controller中涉及到三個類,CommonUtil是用來請求微信介面的,TrustManager是管理器,WxConfig是配置一些你的小程序 信息

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
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.JSONObject;

public class CommonUtil {
/**
* 發送https請求
* @param requestUrl 請求地址
* @param requestMethod 請求方式(GET、POST)
* @param outputStr 提交的數據
* @return JSONObject(通過JSONObject.get(key)的方式獲取json對象的屬性值)
*/
public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
try {
// 創建SSLContext對象,並使用我們指定的信任管理器初始化
TrustManager[] tm = { new MyX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 從上述SSLContext對象中得到SSLSocketFactory對象
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);
// 設置請求方式(GET/POST)
conn.setRequestMethod(requestMethod);

// 當outputStr不為null時向輸出流寫數據
if (null != outputStr) {
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) {
System.out.println("連接超時");
} catch (Exception e) {
System.out.println("請求異常");
}
return jsonObject;
}
}
登錄後復制


import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

/**
* 類名: MyX509TrustManager.java</br>
* 描述: 信任管理器</br>
* 開發人員:wangl</br>
* 創建時間: 2018-01-09</br>
*/
public class MyX509TrustManager implements X509TrustManager {

// 檢查客戶端證書
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}

// 檢查伺服器端證書
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}

// 返回受信任的X509證書數組
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
登錄後復制


有了這兩個類就可以獲取到用戶的openid了,大家都知道,保存用戶的昵稱跟頭像是沒什麼用的,但是需求有需要,只好保存 了,下面我貼出業務層代碼,哈哈哈哈哈,我只是在瞎搞,自己練習,如果代碼有什麼可笑的地方不要噴我。

如果用戶更換了頭像或者昵稱,我們並不知道用戶什麼時候更換,所以我想了一種方法,判斷用戶是否改變數據,如果改變數據的話,我們再進行資料庫的操作,如果不改變的話直接return返回,結束操作。

下面這段代碼是ServiceImpl類。

public void selectUserByOpenId(String openid, String hearl, String nickname, String sex, String country,
String province, String city) {
String userip = country+province+city;//用戶地址
String usersex = "";
User user = mapper.selectUser(openid);
if(user!=null){//如果用戶不等於空
if(user.getNickname().equals(nickname)&&user.getHearl().equals(hearl)&&user.getSex().equals(sex)&&user.getUserip().equals(userip)){
System.out.println("數據暫未修改");
return;
}else{
try {
mapper.updateUserMseeage(openid,nickname,hearl,sex,userip);
System.out.println("修改數據成功");
} catch (Exception e) {
System.out.println("修改數據失敗");
e.printStackTrace();
}

}
}else{//用戶為空進行
try {
String phone = "";
String createtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
mapper.initUser(openid,nickname,hearl,phone,sex,userip,createtime);
} catch (Exception e) {
System.out.println("初始化錯誤");
e.printStackTrace();
}
}
}
登錄後復制


QQ:434494584

關於微信公眾號獲取openId,請點擊https://blog.csdn.net/qq_39851704/article/details/89174501

小程序獲取openid加java後台代碼
小程序
小程序java後台
屬羊人要「沉住氣」,別跟這個人分開,是來「擁護」你成事的
麥玲玲僅供娛樂
廣告

微信小程序wx.getUserInfo授權獲取用戶信息(頭像、昵稱)的實現
37下載·0評論
2020年10月14日
java微信小程序授權 獲取用戶信息、獲取openid和session_key 獲取用戶unionId、(用戶數據的簽名驗證和加解密)JAVA版
5.8W閱讀·63評論·42點贊
2018年5月9日
Java後台實現網站微信掃碼登錄功能,獲取用戶openid,及微信用戶信息(小程序碼方案),關聯微信小程序(個人主體小程序也可以)
1098閱讀·0評論·2點贊
2022年10月26日
微信小程序請求後台介面(完整版)
1.5W閱讀·0評論·17點贊
2020年7月20日
java實現微信授權獲取用戶openid及授權用戶相關信息
2.2W閱讀·12評論·5點贊
2018年1月9日
java微信獲取用戶信息_Java微信公眾平台開發(十)--微信用戶信息的獲取
252閱讀·0評論·0點贊
2021年2月12日

電馬新能源車24.99萬元起,現車交付!
電馬新能源車
廣告
微信小程序獲取用戶信息(昵稱、頭像、openid等)
8480閱讀·2評論·2點贊
2021年6月22日
通過微信用戶的openid獲取用戶的頭像,昵稱,性別等信息!
7.3W閱讀·6評論·5點贊
2018年7月16日
java 根據openid查詢_java 根據openId獲取用戶基本信息
1060閱讀·0評論·0點贊
2021年3月16日
java後端實現微信登錄獲取code,後端獲取code、openid以及用戶信息數據
5662閱讀·8評論·1點贊
2021年11月30日
微信小程序如何獲取微信昵稱和頭像
1.7W閱讀·2評論·8點贊
2022年3月1日
java獲取微信用戶openid
1.3W閱讀·1評論·0點贊
2018年7月6日
微信小程序獲取用戶信息(getUserProfile介面回收後)——通過頭像昵稱填寫獲取用戶頭像和昵稱
724閱讀·0評論·0點贊
2022年11月24日
java獲取openid_JAVA獲取微信小程序openid和獲取公眾號openid,以及通過openid獲取用戶信息...
1229閱讀·0評論·0點贊
2021年2月12日
java後台微信小程序獲取手機號
1794閱讀·1評論·1點贊
2020年9月25日
微信小程序——獲取用戶手機號(Java後台)
1285閱讀·0評論·1點贊
2022年8月25日
java微信小程序獲取用戶openid_微信小程序授權獲取用戶詳細信息openid的實例詳解...
632閱讀·0評論·0點贊
2021年3月8日
java微信開發-之如何獲取openid 和用戶信息
3.5W閱讀·18評論·8點贊
2016年12月6日
微信公眾號H5獲取用戶openid等用戶信息(java)
1182閱讀·1評論·3點贊
2021年11月4日
去首頁
看看更多熱門內容
評論14

for__rain


就這個發送http請求,看了一堆憨憨的操作,總算找到這個好用的啦,謝謝
2019.10.21

煙雨驚蟄


[code=java] //幫你們補上WxConfig public class WxConfig { public static String APPID = "你的APPID "; public static String APPSECRECT = "你的APPSECRECT "; public static String GRANTTYPE = "你的GRANTTYPE "; } [/code]
2019.04.09

薩埵十二


大哥您好,我想請問一下,沒有appid可以獲取用戶的openid么?

⑶ java開發微信根據獲得用戶信息嗎

跟據用戶的openid獲取用戶信息,具體可以查看微信開發的api文檔

⑷ JAVA關於微信OpenId獲取問題

如果你不是認證了的服務號,那麼抱歉,你獲得不了用戶的微信號,所以根本判斷不了他是否關注了。如果你是擁有高級介面的服務號,那麼你可以獲得關注用戶OpenID列表和訪問用戶的OpenID,查找一下就能確定是否關注了。

⑸ Java後端小程序微信登錄怎麼寫

其實還蠻簡單的,可以說一搜一大把,下面說下兩種方式。

  1. 自行開發
    主要就是通過小程序端直接請求登錄獲取到code(登錄憑證)、如果需要獲取用戶手機號則需要再次授權需要iv和encryptedData,注意這里授權兩次,也可以作為一次處理。

(1) 後端接收到小程序端請求的code,進行解密,可以參考微信小程序開發文檔,拿到openId和session_key,這一步如果是已經注冊的用戶可以直接將後台分配的token一起組成對象存儲到redis中,期限7-30天皆可,先從redis判定這個openId是否已經解析過且已存儲為正式用戶,是則直接返回系統的登錄憑證完成登錄。如果不是就需要走第二步。
(2)通過iv和encryptedData解析獲取用戶的手機號,完成解析後將用戶信息存儲,並一樣存儲到資料庫和redis中,返回憑證。

2. 使用已經集成好的sdk,使用maven項目直接引入對象的jar即可。

舉個栗子weixin-java-miniapp 可以看下對應的文檔說明,使用已經集成好的方法即可。

閱讀全文

與java獲取微信用戶相關的資料

熱點內容
打開微信收付款加密 瀏覽:398
小度app怎麼關閉看護助手 瀏覽:739
伺服器方舟boss屬性怎麼調 瀏覽:345
acos系統終端命令 瀏覽:915
寧德雲伺服器最新行情 瀏覽:475
壓縮性骨折五十天 瀏覽:656
如何在伺服器里把方塊替換 瀏覽:909
變頻空調摘板用什麼替代壓縮機 瀏覽:46
怎麼在蘋果手機上玩安卓和平精英 瀏覽:237
python非同步調用框架 瀏覽:963
安卓手機如何拍live圖 瀏覽:823
供應鏈管理系統源碼 瀏覽:944
方舟編譯器會適配哪些型號 瀏覽:470
主流雲伺服器哪個牌子好 瀏覽:267
導航怎麼看伺服器在那 瀏覽:932
廣石化單片機 瀏覽:281
和教育連接伺服器失敗是什麼原因 瀏覽:1003
建行app怎麼存定期 瀏覽:830
mc伺服器地址183 瀏覽:73
為什麼會解壓軟體解壓失敗 瀏覽:110