位置: IT常識 - 正文
推薦整理分享微信小程序獲取用戶openid(微信小程序獲取手機號失敗),希望有所幫助,僅作參考,歡迎閱讀內(nèi)容。
文章相關熱門搜索詞:微信小程序獲取手機號失敗,微信小程序獲取地理位置,微信小程序獲取地理位置失敗,微信小程序獲取地理位置,微信小程序獲取地理位置,微信小程序獲取手機號,微信小程序獲取手機號,微信小程序獲取手機號上限怎么辦,內(nèi)容如對您有幫助,希望把文章鏈接給更多的朋友!
實現(xiàn)代碼:直接簡單
wx.login({ success(res) { if (res.code) { //發(fā)起網(wǎng)絡請求 wx.request({ //這里填你自己的appid 和 wxspSecret url: "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxspAppid+"&secret=" + wxspSecret + "&js_code=" + res.code + "&grant_type=authorization_code" , method: "POST", success(res){//獲取成功要執(zhí)行的動作}, fail(data){//失敗要執(zhí)行的動作 } }) } else {console.log('登錄失敗!' + res.errMsg)} } })問題: 前端直接暴露appid和appsecret
最開始使用這種方式,到了小程序發(fā)布的階段,因為直接暴露自己的appid和appsecret在前端,經(jīng)過反編譯小程序會直接獲取到你的這些信息,并且不改的話也發(fā)布不了。。。之后就改成云函數(shù)獲取了
云函數(shù)獲取oppenid方便并且沒有暴露信息的風險:
步驟1:創(chuàng)建云函數(shù)
打開云開發(fā)控制臺: 選擇云函數(shù),創(chuàng)建一個函數(shù),函數(shù)名為get
步驟2:建立一個云函數(shù),命名為剛剛的get
步驟3: index.js
// 云函數(shù)入口函數(shù)exports.main = async (event, context) => { const wxContext = cloud.getWXContext() console.log("OPENID",wxContext.OPENID); return { event, openid: wxContext.OPENID, appid: wxContext.APPID, unionid: wxContext.UNIONID, }}config.json
{ "permissions": { "openapi": [ ] }}在你需要獲取的地方直接調(diào)用即可,比如在app.js中
getOpenid() { let that = this; wx.cloud.callFunction({ name: 'get', complete: res => { //你想要完成的功能,比如存儲openid到全局 that.globalData.openid = res.result.openid; } }) },上線兩個星期左右,云函數(shù)收費了。。。 后面還是使用后端完成openid的獲取
后端獲取openid小程序端wx.login({ success(res) { if (res.code) { //發(fā)起網(wǎng)絡請求 wx.request({ url: "你的接口"+res.code, method: "POST", success(res){//成功后的邏輯處理 } }) } else { wx.showToast({ title: '出現(xiàn)錯誤', icon: 'fail', duration: 5000 }) console.log('出現(xiàn)錯誤!' + res.errMsg) } } })后端(springboot)@PostMapping("你的接口") public Response decodeOpenid(HttpServletResponse response, @RequestParam String code){ response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("utf-8"); String wxspAppid = "你的appid"; String wxspSecret = "你的密鑰"; try { Map<String, String> map = new HashMap<>(); // 授權(quán)(必填)固定 String grant_type = "authorization_code"; // 發(fā)送請求 String res = HttpRequest.post("https://api.weixin.qq.com/sns/jscode2session") .form("appid",wxspAppid) .form("secret",wxspSecret) .form("js_code",code) .form("grant_type",grant_type) .execute().body(); // 解析相應內(nèi)容(轉(zhuǎn)換成json對象) JSONObject json = JSONObject.parseObject(res); log.info("解析code請求結(jié)果:"+json.toString()); //獲取openid String openid = json.getString("openid"); log.info("openid:"+openid); return Response.success(openid); } catch (Exception e) { e.printStackTrace(); return Response.fail("openId生成失敗"); } }需要導入hutools工具包和slf4j的依賴
ps: 微信小程序如果要發(fā)布的話是需要進行域名購買和備案的,以及后端https的配置。
上一篇:萬字長文:Stable Diffusion 保姆級教程(萬字長文護國安是誰寫的)
下一篇:深度學習參數(shù)初始化(二)Kaiming初始化 含代碼
網(wǎng)站地圖: 企業(yè)信息 工商信息 財稅知識 網(wǎng)絡常識 編程技術(shù)
友情鏈接: 武漢網(wǎng)站建設