1、首先打開(kāi)《java》這款軟件。
成都創(chuàng)新互聯(lián)專業(yè)提供服務(wù)器機(jī)柜租用服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購(gòu)買服務(wù)器機(jī)柜租用服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
2、其次輸入個(gè)人賬號(hào)密碼點(diǎn)擊登錄。
3、最后在軟件中輸入微信賬號(hào)類,微信號(hào)。手機(jī)號(hào)。昵稱點(diǎn)擊編寫(xiě)即可。
改為,你的boolean數(shù)組沒(méi)有初始化,bar[0]取到的為null,if(null){} 編譯通不過(guò)去
1. String foo = “blue”;
2. Boolean[] bar = {true};
3. if (bar[0]) {
4. foo = “green”;
5. }
小程序前端 app.js
wx.login({
success: res = {
// 發(fā)送 res.code 到后臺(tái)換取 openId, sessionKey, unionId
if(res.code){
wx.getUserInfo({
success: function(res_user){
wx.request({
url: '', //這里是本地請(qǐng)求路徑,可以寫(xiě)你自己的本地路徑,也可以寫(xiě)線上環(huán)境
data: {
code: res.code,//獲取openid的話 需要向后臺(tái)傳遞code,利用code請(qǐng)求api獲取openid
headurl: res_user.userInfo.avatarUrl,//這些是用戶的基本信息
nickname:res_user.userInfo.nickName,//獲取昵稱
sex:res_user.userInfo.gender,//獲取性別
country: res_user.userInfo.country,//獲取國(guó)家
province: res_user.userInfo.province,//獲取省份
city: res_user.userInfo.city//獲取城市
},
success: function(res){
wx.setStorageSync("openid", res.data)//可以把openid保存起來(lái),以便后期需求的使用
}
})
}
})
}
}
})
一些詳細(xì)的參數(shù)請(qǐng)參考微信api:
下來(lái)就是Java 上面這是controller,其中有些地方也是取別人的優(yōu)點(diǎn)寫(xiě)的
@ResponseBody
@RequestMapping(value = "/getOpenId", method = RequestMethod.GET) // 獲取用戶信息
public String getOpenId(@Param("code") String code, @RequestParam("headurl") String headurl,
@RequestParam("nickname") String nickname, @RequestParam("sex") String sex,
@RequestParam("country") String country, @RequestParam("province") String province,
@RequestParam("city") String city) {
String WX_URL = ";secret=SECRETjs_code=JSCODEgrant_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 {
// 業(yè)務(wù)操作
String openid = jsonObject.getString("openid");
wechatService.selectUserByOpenId(openid, headurl, nickname, sex, country, province, city);
return openid;
} catch (Exception e) {
System.out.println("業(yè)務(wù)操作失敗");
e.printStackTrace();
}
} else {
System.out.println("code無(wú)效");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "錯(cuò)誤";
} //可能代碼復(fù)制過(guò)來(lái),錯(cuò)位了,你們自己格式化一下吧。
登錄后復(fù)制
?
首先獲取openid根據(jù)文檔需要訪問(wèn)一個(gè)https接口 如下:
;secret=SECRETjs_code=JSCODEgrant_type=authorization_code
appid是你小程序的appid,secret是你小程序的appsercet,js_code是前臺(tái)登陸成功后返回給你的code,grant_type為固定值authorization_code.
appid跟secret的查看在微信公眾平臺(tái):
注意:appid跟secret只有小程序的管理員可以看到,如果只是有權(quán)限的話,還是看不到,必須管理員掃碼才可以看到,進(jìn)去之后就在 設(shè)置→→→開(kāi)發(fā)設(shè)置
controller中涉及到三個(gè)類,CommonUtil是用來(lái)請(qǐng)求微信接口的,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 {
/**
* 發(fā)送https請(qǐng)求
* @param requestUrl 請(qǐng)求地址
* @param requestMethod 請(qǐng)求方式(GET、POST)
* @param outputStr 提交的數(shù)據(jù)
* @return JSONObject(通過(guò)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í)向輸出流寫(xiě)數(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) {
System.out.println("連接超時(shí)");
} catch (Exception e) {
System.out.println("請(qǐng)求異常");
}
return jsonObject;
}
}
登錄后復(fù)制
?
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* 類名: MyX509TrustManager.java/br
* 描述: 信任管理器/br
* 開(kāi)發(fā)人員:wangl/br
* 創(chuàng)建時(shí)間: 2018-01-09/br
*/
public class MyX509TrustManager implements X509TrustManager {
// 檢查客戶端證書(shū)
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
// 檢查服務(wù)器端證書(shū)
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
// 返回受信任的X509證書(shū)數(shù)組
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
登錄后復(fù)制
?
有了這兩個(gè)類就可以獲取到用戶的openid了,大家都知道,保存用戶的昵稱跟頭像是沒(méi)什么用的,但是需求有需要,只好保存 了,下面我貼出業(yè)務(wù)層代碼,哈哈哈哈哈,我只是在瞎搞,自己練習(xí),如果代碼有什么可笑的地方不要噴我。
如果用戶更換了頭像或者昵稱,我們并不知道用戶什么時(shí)候更換,所以我想了一種方法,判斷用戶是否改變數(shù)據(jù),如果改變數(shù)據(jù)的話,我們?cè)龠M(jìn)行數(shù)據(jù)庫(kù)的操作,如果不改變的話直接return返回,結(jié)束操作。
下面這段代碼是ServiceImpl類。
public void selectUserByOpenId(String openid, String headurl, 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.getHeadurl().equals(headurl)user.getSex().equals(sex)user.getUserip().equals(userip)){
System.out.println("數(shù)據(jù)暫未修改");
return;
}else{
try {
mapper.updateUserMseeage(openid,nickname,headurl,sex,userip);
System.out.println("修改數(shù)據(jù)成功");
} catch (Exception e) {
System.out.println("修改數(shù)據(jù)失敗");
e.printStackTrace();
}
}
}else{//用戶為空進(jìn)行
try {
String phone = "";
String createtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
mapper.initUser(openid,nickname,headurl,phone,sex,userip,createtime);
} catch (Exception e) {
System.out.println("初始化錯(cuò)誤");
e.printStackTrace();
}
}
}
登錄后復(fù)制
?
QQ:434494584
關(guān)于微信公眾號(hào)獲取openId,請(qǐng)點(diǎn)擊
小程序獲取openid加java后臺(tái)代碼
小程序
小程序java后臺(tái)
屬羊人要“沉住氣”,別跟這個(gè)人分開(kāi),是來(lái)“擁護(hù)”你成事的
麥玲玲僅供娛樂(lè)
?廣告
?
微信小程序wx.getUserInfo授權(quán)獲取用戶信息(頭像、昵稱)的實(shí)現(xiàn)
37下載·0評(píng)論
2020年10月14日
java微信小程序授權(quán) 獲取用戶信息、獲取openid和session_key 獲取用戶unionId、(用戶數(shù)據(jù)的簽名驗(yàn)證和加解密)JAVA版
5.8W閱讀·63評(píng)論·42點(diǎn)贊
2018年5月9日
Java后臺(tái)實(shí)現(xiàn)網(wǎng)站微信掃碼登錄功能,獲取用戶openid,及微信用戶信息(小程序碼方案),關(guān)聯(lián)微信小程序(個(gè)人主體小程序也可以)
1098閱讀·0評(píng)論·2點(diǎn)贊
2022年10月26日
微信小程序請(qǐng)求后臺(tái)接口(完整版)
1.5W閱讀·0評(píng)論·17點(diǎn)贊
2020年7月20日
java實(shí)現(xiàn)微信授權(quán)獲取用戶openid及授權(quán)用戶相關(guān)信息
2.2W閱讀·12評(píng)論·5點(diǎn)贊
2018年1月9日
java微信獲取用戶信息_Java微信公眾平臺(tái)開(kāi)發(fā)(十)--微信用戶信息的獲取
252閱讀·0評(píng)論·0點(diǎn)贊
2021年2月12日
?
電馬新能源車24.99萬(wàn)元起,現(xiàn)車交付!
電馬新能源車
?廣告
微信小程序獲取用戶信息(昵稱、頭像、openid等)
8480閱讀·2評(píng)論·2點(diǎn)贊
2021年6月22日
通過(guò)微信用戶的openid獲取用戶的頭像,昵稱,性別等信息!
7.3W閱讀·6評(píng)論·5點(diǎn)贊
2018年7月16日
java 根據(jù)openid查詢_java 根據(jù)openId獲取用戶基本信息
1060閱讀·0評(píng)論·0點(diǎn)贊
2021年3月16日
java后端實(shí)現(xiàn)微信登錄獲取code,后端獲取code、openid以及用戶信息數(shù)據(jù)
5662閱讀·8評(píng)論·1點(diǎn)贊
2021年11月30日
微信小程序如何獲取微信昵稱和頭像
1.7W閱讀·2評(píng)論·8點(diǎn)贊
2022年3月1日
java獲取微信用戶openid
1.3W閱讀·1評(píng)論·0點(diǎn)贊
2018年7月6日
微信小程序獲取用戶信息(getUserProfile接口回收后)——通過(guò)頭像昵稱填寫(xiě)獲取用戶頭像和昵稱
724閱讀·0評(píng)論·0點(diǎn)贊
2022年11月24日
java獲取openid_JAVA獲取微信小程序openid和獲取公眾號(hào)openid,以及通過(guò)openid獲取用戶信息...
1229閱讀·0評(píng)論·0點(diǎn)贊
2021年2月12日
java后臺(tái)微信小程序獲取手機(jī)號(hào)
1794閱讀·1評(píng)論·1點(diǎn)贊
2020年9月25日
微信小程序——獲取用戶手機(jī)號(hào)(Java后臺(tái))
1285閱讀·0評(píng)論·1點(diǎn)贊
2022年8月25日
java微信小程序獲取用戶openid_微信小程序授權(quán)獲取用戶詳細(xì)信息openid的實(shí)例詳解...
632閱讀·0評(píng)論·0點(diǎn)贊
2021年3月8日
java微信開(kāi)發(fā)-之如何獲取openid 和用戶信息
3.5W閱讀·18評(píng)論·8點(diǎn)贊
2016年12月6日
微信公眾號(hào)H5獲取用戶openid等用戶信息(java)
1182閱讀·1評(píng)論·3點(diǎn)贊
2021年11月4日
去首頁(yè)
看看更多熱門(mén)內(nèi)容
評(píng)論14
?
for__rain
?
贊
就這個(gè)發(fā)送http請(qǐng)求,看了一堆憨憨的操作,總算找到這個(gè)好用的啦,謝謝
2019.10.21
?
煙雨驚蟄
?
贊
[code=java] //幫你們補(bǔ)上WxConfig public class WxConfig { public static String APPID = "你的APPID "; public static String APPSECRECT = "你的APPSECRECT "; public static String GRANTTYPE = "你的GRANTTYPE "; } [/code]
2019.04.09
?
薩埵十二
?
贊
大哥您好,我想請(qǐng)問(wèn)一下,沒(méi)有appid可以獲取用戶的openid么?
public?class?Test?{
public?static?void?main(String[]?args)?{
RandomHan?han?=?new?RandomHan();
System.out.print(han.getRandomHan());
}
}
class?RandomHan?{
private?Random?ran?=?new?Random();
private?final?static?int?delta?=?0x9fa5?-?0x4e00?+?1;
public?char?getRandomHan()?{
return?(char)(0x4e00?+?ran.nextInt(delta));?
}
}
隨機(jī)生成漢字的代碼,希望能幫助到您。