最新微服務SpringCloud項目:微信公衆号+SpringBoot開發流程總結(必看) - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

最新微服務SpringCloud項目:微信公衆号+SpringBoot開發流程總結(必看)

發表時間:2020-10-20

發布人:葵宇科技

浏覽次數:123

想要查看前面的筆記請翻閱我的CSDN博客,作者碼字不易,喜歡的話點贊,加個(gè)關(guān)注吧,後期還有很多幹貨等着你(nǐ)!

1.注冊微信公衆号

這裡主要做技術(shù)讨論,請查看:傳送門

2.獲取用戶微信信息

2.1 前端首先獲取用戶code

code說明

code作為換取access_token的票據,每次用戶授權帶上的code将不一樣,code隻能使用一次,5分鐘未被使用自動(dòng)過期。

分為兩種情況:1.用戶已經關(guān)注;2.用戶未關(guān)注

用戶已經關(guān)注怎麼做

在确保微信公衆賬号擁有授權作用域(scope參數)的權限的前提下(xià)(服務号獲得高級接口後,默認擁有scope參數中(zhōng)的snsapi_base和(hé)snsapi_userinfo),引導關(guān)注者打開如(rú)下(xià)頁面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

若提示“該鍊接無法訪問(wèn)”,請檢查參數是否填寫錯誤,是否擁有scope參數對應的授權作用域權限。 參考鍊接(請在微信客戶端中(zhōng)打開此鍊接體驗) Scope為snsapi_base

參數說明
參數是否必須說明appid是公衆号的唯一标識redirect_uri是授權後重定向的回調鍊接地址,請使用urlencode對鍊接進行處理response_type是返回類型,請填寫codescope是應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,隻能獲取用戶openid),snsapi_userinfo (彈出授權頁面,可(kě)通(tōng)過openid拿到昵稱、性别、所在地。并且,即使在未關(guān)注的情況下(xià),隻要用戶授權,也能獲取其信息)state否重定向後會帶上state參數,開發者可(kě)以填寫a-zA-Z0-9的參數值,最多128字節#wechat_redirect是無論直接打開還是做頁面302重定向時候,必須帶此參數
用戶同意授權後

如(rú)果用戶同意授權,頁面将跳轉至

redirect_uri/?code=CODE&state=STATE。
用戶禁止授權

則重定向後不會帶上code參數,僅會帶上state參數

redirect_uri?state=STATE

用戶未關(guān)注怎麼做

第三方使用網站(zhàn)應用授權登錄前請注意已獲取相應網頁授權作用域(scope=snsapi_login)

 https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 

若提示“該鍊接無法訪問(wèn)”,請檢查參數是否填寫錯誤,如(rú)redirect_uri的域名與審核時填寫的授權域名不一緻或scope不為snsapi_login。

參數說明
參數是否必須說明appid是公衆号的唯一标識redirect_uri是授權後重定向的回調鍊接地址,請使用urlencode對鍊接進行處理response_type是返回類型,請填寫codescope是應用授權作用域,擁有多個(gè)作用域用逗号(,)分隔,網頁應用目前僅填寫snsapi_login即可(kě)state否用于保持請求和(hé)回調的狀态,授權請求後原樣帶回給第三方。該參數可(kě)用于防止csrf攻擊(跨站(zhàn)請求僞造攻擊),建議第三方帶上該參數,可(kě)設置為簡單的随機數加session進行校(xiào)驗#wechat_redirect是無論直接打開還是做頁面302重定向時候,必須帶此參數
返回值

用戶允許授權後,将會重定向到redirect_uri的網址上,并且帶上code和(hé)state參數

redirect_uri?code=CODE&state=STATE

若用戶禁止授權,則重定向後不會帶上code參數,僅會帶上state參數

redirect_uri?state=STATE

2.2 前端獲取code後将code值傳至後端

@RequestMapping("/greet")
    public Result greetUser(@PathVariable String appid, @RequestParam String code) {
        if (!this.wxService.switchover(appid)) {
            throw new IllegalArgumentException(String.format("未找到對應appid=[%s]的配置,請核實!", appid));
        }
        WxMpUser user = null;
        try {
            WxMpOAuth2AccessToken accessToken = wxService.getOAuth2Service().getAccessToken(code);
            user = wxService.getOAuth2Service().getUserInfo(accessToken, null);
        } catch (WxErrorException e) {
            e.printStackTrace();
        }

        return Result.succeed(user,"用戶信息");
    }

當獲取到用戶的微信信息後 ,我将其中(zhōng)重要的openid存在數據庫中(zhōng),以便後期使用,這時候,我們已經完成了重要的一步了,後期我還添加了公衆号對話等一系列相關(guān)操作,都是需要openid的支持

後端獲取用戶信息:這裡要注意,我使用的是一個(gè)國人開發的小工具
maven如(rú)下(xià):

        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>3.9.0</version>
        </dependency>

gitee傳送門:點擊這裡
我的目錄結構如(rú)下(xià):
在這裡插入圖片描述

未完待續~~~

相關(guān)案例查看更多