Java對接微信登錄


今天我們來對接微信開放平台的網站應用登錄

首先上文檔鏈接:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html


1. 第三方發起微信授權登錄請求,微信用戶允許授權第三方應用后,微信會拉起應用或重定向到第三方網站,並且帶上授權臨時票據code參數;
2. 通過code參數加上AppID和AppSecret等,通過API換取access_token;
3. 通過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操作。
 
文檔上說的也很明白
 
首先我們需要注冊一個開放平台的賬號

 

 

 

但是吧很不爽的是需要企業認證花300RMB進行資質認證。

----------------------------------------------------------
ok,我們先來創建一個網站應用
 
        

 

 

 

根據提示進行填寫就行了
 
        
填寫完,狀態為已通過就可以開始微信登錄的開發了。

 
        
首先我們需要知道三個信息imageimage,方可繼續開發。
 
        
 
        
再讓我們繼續來看微信開放平台的文檔

 

   注意是否必須!!!

 

 

 redirect_uri是回調地址uri剛才配置的授權回調域填上並加上接口 or html,這個可以根據自己的業務來,這里我是填上接口

 

這個urlEnCode處理,網上有很多在線工具:https://tool.chinaz.com/tools/urlencode.aspx

 

然后根據微信開發文檔填寫對應的信息,比如:

https://open.weixin.qq.com/connect/qrconnect?

appid=xxxxxxxxx&redirect_uri=https%3a%2f%2fwww.baidu.com%2frequestWechatLogin&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect

上面信息是我隨便填寫的,開發時請根據自己的微信開放平台配置填寫

 

ok,完成后打開此鏈接就會進入到該頁面,就可以開始登錄了。

 

 

 

 

 

使用手機端微信掃描,

 

注意:每次每個用戶授權后都會得到一個一次性的code,這個code只能使用一次 ,下次再授權登錄會重新生成code的!!!

 

 

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

鏈接參數根據微信開放平台配置對應填寫

 

 

 

 

 

 




因為我這邊redirect_uri填寫的是一個接口,就需要寫一個接口,我就直接上代碼了,這里有封裝的類和枚舉,我就不展示了大家可以修改!!!

 

 1 /**
 2      * 請求 code web微信登錄
 3      *
 4      * @param code 請求登錄唯一 code
 5      * @return 通用返回對象
 6      */
 7     @ApiOperation("請求 code 微信登錄")
 8     @ApiImplicitParam(name = "code", value = "請求登錄唯一code", dataType = "String", paramType = "query")
 9     @GetMapping("/requestWeChatLogin")
10     public ApiResult requestWeChatLogin(@RequestParam("code") String code) {
11         // 斷言為空則拋出異常
12         Assert.notNull(code, "未授權成功");
13         String appId = "xxxxxxxxx";
14         String secret = "xxxxxxxxxxxxxxxxxx";
15         String strUri = StrUtil.format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={}&secret={}&code={}&grant_type=authorization_code", appId, secret, code);
16         // 使用 Hutool開發工具包,執行請求接口,獲取相關信息
17         HttpResponse response = HttpRequest.get(strUri).execute();
18         // 轉成JSON對象
19         JSONObject jsonObject = JSONUtil.parseObj(response.body());
20         // 判斷JSON對象中 unionid 是否存在
21         if (jsonObject.isNull("unionid")) {
22             // 不存在返回結果,code無效
23             return new ApiResult(CommonEnum.CODE_INVALID);
24         }
25         // 獲取 unionId
26         String unionId = jsonObject.get("unionid").toString();
27         // 獲取 openId
28         String openId = jsonObject.get("openid").toString();
29         // 獲取 accessToken
30         String accessToken= jsonObject.get("access_token").toString();
31         return new ApiResult(CommonEnum.SUCCESS);
32     } 

 

這樣一頓操作后,就可以根據code獲取到掃碼授權用戶的一些信息。

拿到這些信息可以使用 access_token&openid 來獲取用戶個人信息 等等。

該保存數據庫可以保存,有別的操作自行編寫!!!  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM