日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微信公众号授权步骤详细步骤介绍和整合springboot开发(java版)

發布時間:2025/3/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信公众号授权步骤详细步骤介绍和整合springboot开发(java版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公眾號:好好學java,獲取優質學習資源。

一、微信公眾號授權步驟

首先到微信公眾平臺注冊賬號,可以看到有四種類型(服務號,訂閱號,小程序,企業微信),用到服務號,而且還需要認證,但注冊服務號需要公司的資質,我是注冊了一個訂閱號(為了后續申請測試號)。 不同的公眾號有不同級別的公眾號接口權限,詳情可以參見微信官公眾平臺方文檔. 從上面文檔里可以看到未認證的訂閱號沒有用戶管理-網頁授權獲取用戶openid/用戶基本信息這一項的權限

所以我們需要到這里申請一個測試號,接口測試號申請

申請測試號后進入測試好管理界面。里面有測試號信息(appID,appSectet)、體驗接口權限表等信息。

然后到微信網頁授權文檔,有對微信網頁授權過程的詳細描述,這頁文檔非常重要(仔細查看,很多問題都是文檔沒有看清楚)

我們用的是測試號,需要再到測試號管理界面修改網頁授權域名,如下圖。

然后就是微信網頁授權的四個步驟,在這里有非常清楚地描述。這些步驟都是手工方式獲取opendid,下面介紹如何使用SDK的方式獲取。

我們這里用的是wixin-java-tools這個開源的SDK。

我們首先要到SDK文檔的MP_Quick Start部分,查看如何配置WxMpInMemoryConfigStorage和WxMpService。
然后到文檔的MP_OAuth2網頁授權部分,找到如何去獲取WxMpOAuth2AccessToken,這個對象對微信的返回數據作了封裝,其中就包含opendi字段。

以上就是獲取openid的兩種方式,獲取openid是我們下一步微信支付的基礎。

二、springboot整合微信授權開發

看了上面的文檔和sdk后,我們應該知道大概的開發流程,如何整合到springboot呢,可能還是有點不太了解,接下來我們看看。

1.1構造網頁授權url(官方文檔)

首先構造網頁授權url,然后構成超鏈接讓用戶點擊:

WxMpService wxMpService = ...; String url = ...; wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null)

1.2整合到springboot

@GetMapping("/authorize")public String authorize(@RequestParam("returnUrl") String returnUrl){//1. 配置//2.調用方法String url="http://localhost:8080/sell/wechat/userInfo";String redirectUrl=wxMpService.oauth2buildAuthorizationUrl(url,WxConsts.OAUTH2_SCOPE_BASE, URLEncoder.encode(returnUrl));log.info("【微信網頁授權】獲取code,redirectUrl={}",redirectUrl);return "redirect:"+redirectUrl;}

第一步:我們需要配置一個回調的網址url。

第二步:調用sdk的方法
wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null)
然后會返回我們的重定向url,例如:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxd898fcb01713c658&redirect_uri=http://localhost:8080/sell/wechat/userInfo&response_type=code&scope=snsapi_base&state=www.baidu.com#wechat_redirect

第三步:重定向到http://localhost:8080/sell/wechat/userInfo,為什么會重定向到這個網址呢?其實剛剛開始我也是很納悶的,然后看了微信網頁授權文檔,發現,文檔這樣描述:

所以到我們的項目中,就是重定向到http://localhost:8080/sell/wechat/userInfo,所以我們實現下面的這個方法。

2.1獲得access token(官方文檔)

當用戶同意授權后,會回調所設置的url并把authorization code傳過來,然后用這個code獲得access token,其中也包含用戶的openid等信息

WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);

2.2整合springboot

@GetMapping("/userInfo")public String userInfo(@RequestParam("code") String code,@RequestParam("state") String returnUrl){WxMpOAuth2AccessToken wxMpOAuth2AccessToken=new WxMpOAuth2AccessToken();try {wxMpOAuth2AccessToken=wxMpService.oauth2getAccessToken(code);}catch (WxErrorException e){log.error("【微信網頁授權】,{}",e);throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg());}String openId=wxMpOAuth2AccessToken.getOpenId();return "redirect:"+ returnUrl+"?openid="+openId;}

1.2中我們知道,用戶授權之后會重定向到redirect_uri/?code=CODE&state=STATE因此會傳過來code和state,所以我們接受這兩個參數。

到現在我們獲取到了WxMpOAuth2AccessToken 。

然后,有了這個token之后,就可以進行用戶操作了。

3獲得用戶基本信息(官方文檔)

WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);

4刷新access token(官方文檔)

wxMpOAuth2AccessToken = wxMpService.oauth2refreshAccessToken(wxMpOAuth2AccessToken.getRefreshToken());

5驗證access token(官方文檔)

boolean valid = wxMpService.oauth2validateAccessToken(wxMpOAuth2AccessToken);

點個贊,看一看,好習慣!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收錄,這是我花了 3 個月總結的一線大廠 Java 面試總結,本人已拿大廠 offer。
另外,原創文章首發在我的個人博客:blog.ouyangsihai.cn,歡迎訪問。

最后,再分享我歷時三個月總結的 Java 面試 + Java 后端技術學習指南,這是本人這幾年及春招的總結,已經拿到了大廠 offer,整理成了一本電子書,拿去不謝,目錄如下:

現在免費分享大家,在下面我的公眾號 程序員的技術圈子 回復 面試 即可獲取。

有收獲?希望老鐵們來個三連擊,給更多的人看到這篇文章

1、老鐵們,關注我的原創微信公眾號「程序員的技術圈子」,專注于 Java、數據結構和算法、微服務、中間件等技術分享,保證你看完有所收獲。

2、給俺點個贊唄,可以讓更多的人看到這篇文章,順便激勵下我繼續寫作,嘻嘻。

3、另外,原創文章首發在我的個人博客:blog.ouyangsihai.cn,歡迎訪問。

點贊是對我最大的鼓勵
↓↓↓↓↓↓

總結

以上是生活随笔為你收集整理的微信公众号授权步骤详细步骤介绍和整合springboot开发(java版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。