這篇文章將為大家詳細(xì)講解有關(guān)Java后端如何實(shí)現(xiàn)使用uni-app獲取微信小程序openid,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)建站長(zhǎng)期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為益陽企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都做網(wǎng)站,益陽網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
這個(gè)是純前端(uniapp)獲取openid的:https://my.oschina.net/u/4284277/blog/3168782
但是這個(gè)有一個(gè)問題就是小程序正式上線后無法拿到openid,所以更新了下面這個(gè)后端(Java)獲取的,希望對(duì)你有幫助。
微信開發(fā)時(shí), 用戶使用小程序需要授權(quán), 這時(shí)就要用到openid進(jìn)行綁定這個(gè)用戶。 openid是微信用戶在公眾號(hào)appid下的唯一用戶標(biāo)識(shí)(appid不同,則獲取到的openid就不同),可用于永久標(biāo)記一個(gè)用戶,同時(shí)也是微信JSAPI支付的必傳參數(shù)。
openid是指這個(gè)用戶在某一個(gè)小程序中授權(quán)后的唯一標(biāo)識(shí)(比如你的身份證)
第一次授權(quán)時(shí)將用戶數(shù)據(jù)保存到數(shù)據(jù)庫, 然后用戶把緩存清理了, 第二次授權(quán)的時(shí)候我們就無法知道這個(gè)用戶是否授權(quán)過。用戶就會(huì)重新保存一份新的數(shù)據(jù)進(jìn)數(shù)據(jù)庫。這是不符合正常邏輯的,因?yàn)槿绻撚脩糍I過東西,再次授權(quán),東西都看不到了,會(huì)像新的號(hào)一樣。當(dāng)然了, 有的設(shè)計(jì)是有自己的記錄方式的,比如需要注冊(cè)登錄。
需要用到wx指定的接口
//@author 兮赫 uni.login({ success: res => { //code值(5分鐘失效) console.info(res.code); uni.request({ //改成自己的服務(wù)地址 url:'http://192.168.1.4:10010/wx/getOpenid/'+res.code, method:'GET', success: (res) => { //這里就拿到openid了,不過一般都是直接在后端使用了,不需要拿到前端了,我就是為了做個(gè)演示。 console.info(res); } }) } });
HttpClient的依賴和json轉(zhuǎn)換的依賴
com.alibaba fastjson 1.2.54 org.apache.httpcomponents httpclient 4.5.10
/** * @author 兮赫 * 微信controller */ @RestController @RequestMapping("/wx") public class WChat { //小程序appid ,需要改為真實(shí)的 private final static String APPID = "wx3599fdagf87366c9"; //小程序secret ,需要改為真實(shí)的 private final static String SECRET = "1a5567978djhs875ss8s2397er57jce"; /** * 通過 appid & secret & code 獲取 openid * @param code */ @GetMapping("/getOpenid/{code}") public String getOpenid(@PathVariable String code) throws IOException { //wx接口路徑 String url = "https://api.weixin.qq.com/sns/jscode2session?grant_type=authorization_code&" + "appid=" + APPID + "&secret=" + SECRET + "&js_code=" + code; //使用HttpClient發(fā)送請(qǐng)求 CloseableHttpClient httpclient = HttpClients.createDefault(); //發(fā)送Get請(qǐng)求 HttpGet request = new HttpGet(url); request.addHeader("Content-Type", "application/json"); //獲得響應(yīng) CloseableHttpResponse response = httpclient.execute(request); //拿到響應(yīng)體 HttpEntity httpEntity = response.getEntity(); //使用工具轉(zhuǎn)換 String result = EntityUtils.toString(httpEntity, "UTF-8");// 轉(zhuǎn)成string JSONObject jsonObject = JSONObject.parseObject(result); System.out.println(jsonObject);//拿到的所有內(nèi)容 String openid = jsonObject.get("openid").toString(); System.out.println(openid);//拿到的openid return openid; } }
關(guān)于Java后端如何實(shí)現(xiàn)使用uni-app獲取微信小程序openid就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。