銆愬井淇$綉椤垫巿鏉冦€慡pringBoot+uniapp瀹炵幇缃戦〉鎺堟潈鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅鏈粡璁よ瘉鐨勮闃呭彿鏄病鏈夋潈闄愯幏鍙栫敤鎴蜂俊鎭殑锛屾墍浠ユ崲涓€濊矾锛岀敤鐧诲綍娉ㄥ唽鐨勬柟寮忓疄鐜扮敤鎴峰尯鍒嗐€備笉杩囧湪寮€鍙戣繃绋嬩腑瀛︿範浜嗗井淇$綉椤电殑鎺堟潈鐧诲綍娴佺▼锛屽垎浜粰澶у锛屼竴璧锋潵鐞嗘竻鎺堟潈閫昏緫銆傗彶锔忓缓璁槄璇?0鍒嗛挓宸﹀彸馃幆涓昏鐩爣娴嬭瘯鍏紬鍙峰疄鐜扮綉椤垫巿鏉冿紝鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅鐏垫椿鎺屾彙寰俊鎺ュ彛鏂囨。锛岀啛缁冭鎺ョ浉鍏虫帴鍙g粍缁囨巿鏉冮€昏緫锛岀啛鎮夊墠绔拰鍓嶇娴佺▼鍚庣瀵规帴馃懆鈥嶐煄撳井淇¤瘯鐢ㄤ汉缇ゅ叕浼楀彿缃戦〉鎺堟潈娴佺▼姣旇緝妯$硦鎴栬€呮槸绗竴娆″仛鐩稿叧娴佺▼浣嗘槸鎯冲涔犵啛鎮夊涔犵殑浜吼煄佸揩閫熼摼鎺ュ叕浼楀彿锛欽avaDog绋嬪簭dog鍦ㄥ叕浼楀彿锛屽彂閫乕wx]锛屼笉鐢ㄥ璺氨鑳芥悶瀹氿煃寽浣犲枩娆㈠簭鍙峰垎绫绘枃绔犱粙缁?椤圭洰瀹炴垬SpringBoot+uniapp+uview2鍒涘缓浼佷笟榛戠孩鍚嶅崟鍚愭Ы灏忕▼搴忦煃╂按鍥炬枃馃摑鍑嗗宸ヤ綔1.鏈嶅姟鍙?璁㈤槄鍙凤紙宸茶璇侊級缃戦〉鎺堟潈鎺ュ彛鏉冮檺鍙湁鏈嶅姟鍙锋垨璁よ瘉杩囩殑璁㈤槄鍙锋墠鏈夋潈闄愶紝涔熷氨鏄瘡骞撮渶瑕佷氦300鍏冭璇佹墠鏈夋潈闄愶紝鍚﹀垯浣犱笉鑳芥寮忚皟鐢ㄨ繖涓帴鍙c€傪煔ㄥ垏璁版病鏈夋潈闄愭椂浼氭彁绀恒€愬井淇″叕浼楀彿鎺堟潈浣滅敤鍩熷弬鏁伴敊璇垨鏃犱綔鐢ㄥ煙鏉冮檺銆戯紝鍙兘鍦ㄦ祴璇曚腑璋冭瘯鍏紬鍙凤紒锛侊紒2.寮€鍙戝伐鍏峰簭鍙峰垎绫诲伐鍏?.鍚庡彴IDEA2鍓嶇uniapp3鍓嶇寰俊寮€鍙戣€呭伐鍏?.鎺ュ彛鏂囨。寰俊瀹樻柟鍏紬鍙锋枃妗?.缃戦〉鎺堟潈鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅閰嶇疆鍜屾祴璇曞彿鏄剧ず鎿嶄綔姝ラ涓哄叕浼楀彿鑿滃崟宸︿晶銆愬紑鍙戝伐鍏枫€?銆嬨€愬叕鍏卞钩鍙版祴璇曡处鍙枫€戝湪Web鏈嶅姟-Web璐﹀彿-淇敼OAuth2.0Web鎺堟潈銆愭巿鏉冨洖璋冮〉闈㈠煙鍚嶃€戝垏璁颁笉瑕佸甫http锛屽~鍐欏嵆鍙繖閲岀殑鍦板潃涓烘湰鏈篿p锛屽彲浠ュ湪閿洏涓婃寜銆恮in+R銆戯紝杈撳叆銆恈md銆戯紝纭鍚庤緭鍏pconfig锛屽鍒禝Pv4鍦板潃銆傛垨鑰呭惎鍔╱niapp鍚庯紝鎺у埗鍙版墦鍗扮殑鍦板潃锛屽涓婃柟娉曚粎闄愪簬鏈湴璋冭瘯銆傪煍涢棶棰樺垎鏋?.浠€涔堟槸缃戦〉鎺堟潈锛屽畼缃戣В閲婂鏋滅敤鎴峰湪寰俊瀹㈡埛绔闂涓夋柟缃戦〉锛屽叕浼楀彿閫氳繃寰俊缃戦〉鐨勬巿鏉冩満鍒跺彲浠ヨ幏鍙栧埌鐢ㄦ埛鐨勫熀鏈俊鎭紝杩涜€屽疄鐜颁笟鍔¢€昏緫銆傜畝鍗曠悊瑙i€氫織鐐硅锛屽綋鎴戜滑閫氳繃寰俊鍐呯疆娴忚鍣ㄨ闂叾浠栫綉绔欐椂锛屾垜浠彲浠ラ€氳繃寰俊鎺堟潈绛栫暐鑾峰彇鐩爣缃戠珯寰俊鐢ㄦ埛鐨勫熀鏈俊鎭紝姣斿鏄电О銆佸ご鍍忕瓑銆備妇涓牀瀛愷煂板湪寰俊涓墦寮€csdn鍒嗕韩閾炬帴锛岃烦杞埌csdn缃戦〉鏃讹紝csdn鍙互閫氳繃缃戦〉鎺堟潈鐩存帴鑾峰彇鎴戜滑鐨勫井淇℃樀绉帮紝澶村儚淇℃伅绛夛紝瀹屾垚鑷巿鏉冩敞鍐?.缃戦〉鎺堟潈娴佺▼姝ラ锛?銆佺敤鎴峰悓鎰忔巿鏉冨苟鑾峰彇瀵嗙爜銆傚墠绔紩瀵肩敤鎴疯繘鍏ユ巿鏉冮〉闈㈠悓鎰忔巿鏉冨苟鑾峰彇code銆?.鍏戞崲缃戦〉鎺堟潈access_token鐨刢ode銆傞€氳繃鍓嶇鑾峰彇鐨勪唬鐮佽皟鐢ㄦ垜浠嚜宸辩殑鏈嶅姟绔帴鍙o紝鍚庡彴浣跨敤浠g爜璋冪敤寰俊鎺ュ彛鎹㈠彇涓€涓猘ccess_token锛堢綉椤垫巿鏉冩帴鍙h皟鐢ㄥ嚟璇侊級锛宎ccess_token鏄皟鐢ㄧ敤鎴蜂俊鎭瓑鎺ュ彛鐨勫繀瑕佸弬鏁?銆佸埛鏂癮ccess_token锛堝鏈夐渶瑕侊級鐢变簬access_token鏈夋晥鏈熻緝鐭紝褰揳ccess_token瓒呮椂鍚庯紝鍙互浣跨敤refresh_token杩涜鍒锋柊锛宺efresh_token鏈夋晥鏈熶负30澶╀粖澶﹔efresh_token杩囨湡鍚庯紝鐢ㄦ埛闇€瑕侀噸鏂版巿鏉?.鎷夊彇鐢ㄦ埛淇℃伅寮€鍙戣€呭彲浠ラ€氳繃access_token鍜宱penid鏉ユ媺鍙栫敤鎴蜂俊鎭紝涓嬮潰鏄噸鐐硅瑙p煄笉鎳備笉瑕佸垝鎺夛紝涓嬮潰鏄噸鐐硅瑙p煈煎紑濮嬬畝鍗曟祦绋嬪浘涓轰簡鏂逛究鏄庣櫧浜嗭紝鎴戠敾浜嗕竴涓畝鍗曠殑娴佺▼鍥俱€傚鏋滄偍鏈変换浣曠枒闂紝璇蜂笉瑕佹媴蹇冦€傚疄闄呰喘涔拌嫻鏋滄墜鏈虹殑渚嬪瓙鍙兘涓嶅お璐村垏锛屼絾寰堟湁甯姪锛屼篃寰堝ソ鐞嗚В銆傛楠ゆ寜鐓т笅鍥?鍒嗘瀽銆傛楠?鍓嶇uniapp杩涘叆鏂板缓鎺堟潈椤甸潰鍚庯紝onLoad鐩存帴璺宠浆鍒板井淇℃帴鍙e湴鍧€锛屽井淇′娇鐢╝ppId鑾峰彇code锛屾惡甯ode杩斿洖鏍规嵁redirect_uri鐨勫綋鍓嶉〉闈€傛鏃讹紝鍦板潃鏍忎腑鍖呭惈浠g爜淇℃伅銆傝烦杞墠璺宠浆鍚庡叧閿唬鐮?/閫氳繃寰俊瀹樻柟鎺ュ彛鑾峰彇浠g爜鍚庯紝浼氬埛鏂拌缃殑鍥炶皟鍦板潃[redirect_uri]锛岀劧鍚庣户缁繘鍏nload()鏂规硶location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirectt_uri="+local+"&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect""appid锛氬搴攁ppIdredirect_uri锛氶〉闈㈤噸瀹氬悜鍦板潃锛屽嵆褰撳墠椤甸潰鐨勫湴鍧€銆傝繖涓湴鍧€涔熸槸涓婇潰鍑嗗4涓璒Auth2.0缃戦〉鎺堟潈銆愭巿鏉冨洖璋冮〉闈㈠煙鍚嶃€戝~鍐欑殑鍊笺€傚井淇℃牴鎹洖璋冨湴鍧€鐢ㄤ唬鐮佽繘琛屽洖璋冦€傚叾浠栧弬鏁拌瀹樻柟鍙傛暟璇存槑2銆傛楠?1.鍚庡彴鎻愪緵鎺ュ彛锛屽叆鍙備负涓婁竴姝ョ殑code锛岄€氳繃code璋冪敤寰俊鎺ュ彛鎹㈠彇access_token銆傝繖閲岀殑鍚庣浣跨敤weixin-java-mp缁勪欢鏂逛究杩炴帴寰俊鐣岄潰銆侤Api(tags="缃戦〉鎺堟潈鎺у埗鍣?)@RestController@RequestMapping("/login")publicclassAuthController{@ResourceprivateUserServiceuserService;@ApiOperation(value="缃戦〉鎺堟潈鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅",notes="缃戦〉鎺堟潈鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅")@GetMappingpublicResponseDatalogin(@RequestParamStringcode)throwsWxErrorException{returnuserService.auth(code);}}2銆佹湁浜嗗墠绔殑浠g爜锛屽湪1涓皟鐢?login鎺ュ彛constres=awaitthis.$api.login({code})if(!res.success){uni.$u.toast(res.message)return}//鐢ㄦ埛淇℃伅this.userInfo=res.data;}3銆佺3姝ュ皢step鍚庡彴鑾峰彇鍒扮殑access_token璋冪敤寰俊鑾峰彇鐢ㄦ埛淇℃伅锛屽苟灏嗙敤鎴蜂俊鎭繑鍥炵粰鍓嶇WxOAuth2AccessTokenaccessToken;WxMpUserwxMpUser;try{//鑾峰彇accessTokenaccessToken=wxMpService.getOAuth2Service().getAccessToken(浠g爜);log.info("AccessToken={}"+accessToken);//鑾峰彇鐢ㄦ埛淇℃伅wxMpUser=wxMpService.getUserService().userInfo(accessToken.getOpenId());log.info("wxMpUser={}",JSONUtil.toJsonStr(wxMpUser));}catch(WxErrorExceptione){杩斿洖ResponseData.error(e.getMessage());}杩斿洖ResponseData.success(wxMpUser);鉂屽父瑙侀敊璇敊璇竴锛氬井淇′腑redirect_uri鍙傛暟閿欒銆怬Auth2.0缃戦〉鎺堟潈銆?鎺堟潈鍥炶皟椤甸潰鍩熷悕閰嶇疆閿欒閿欒浜岋細oauth_code宸茬粡浣跨敤杩囷紝姣忔鐢╟ode鎹㈠彇access_token锛岄兘浼氬け鏁?鍐嶆璋冪敤浼氭姤閿欍€傝鏍规嵁鎮ㄧ殑涓氬姟姣旇緝缂撳瓨銆傞槻姝㈤噸澶嶈皟鐢ㄥ皬缁撴湰鏂囩瘒骞呰櫧闀匡紝浣嗗姛鑳藉疄鐜扮畝鍗曘€備富瑕佺洰鐨勬槸灞曠ず缃戦〉鎺堟潈鐨勮繃绋嬪拰鎬濊矾銆傚井淇″鎺ワ紝寤鸿鏌ョ湅寰俊瀹樻柟鏂囨。銆傚啓鐨勫緢璇︾粏銆傚鐪嬪嚑閬嶏紝浣犲氨浼氭槑鐧芥垜瀵圭枒鎯戞湁浜嗕竴鐐圭悊瑙o紝甯屾湜鑳藉澶у鏈夋墍甯姪銆?/p>
