您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Java后端如何實(shí)現(xiàn)使用uni-app獲取微信小程序openid,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
這個(gè)是純前端(uniapp)獲取openid的:https://my.oschina.net/u/4284277/blog/3168782
但是這個(gè)有一個(gè)問(wèn)題就是小程序正式上線后無(wú)法拿到openid,所以更新了下面這個(gè)后端(Java)獲取的,希望對(duì)你有幫助。
微信開(kāi)發(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ù)庫(kù), 然后用戶把緩存清理了, 第二次授權(quán)的時(shí)候我們就無(wú)法知道這個(gè)用戶是否授權(quán)過(guò)。用戶就會(huì)重新保存一份新的數(shù)據(jù)進(jìn)數(shù)據(jù)庫(kù)。這是不符合正常邏輯的,因?yàn)槿绻撚脩糍I(mǎi)過(guò)東西,再次授權(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了,不過(guò)一般都是直接在后端使用了,不需要拿到前端了,我就是為了做個(gè)演示。 console.info(res); } }) } });
HttpClient的依賴和json轉(zhuǎn)換的依賴
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.10</version> </dependency>
/** * @author 兮赫 * 微信controller */ @RestController @RequestMapping("/wx") public class WChat { //小程序appid ,需要改為真實(shí)的 private final static String APPID = "wx3599fdagf87366c9"; //小程序secret ,需要改為真實(shí)的 private final static String SECRET = "1a5567978djhs875ss8s2397er57jce"; /** * 通過(guò) 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í)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。