最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot實現微信掃碼登錄的示例代碼

 更新時間:2025年04月25日 10:07:31   作者:灰_灰丶灰  
本文主要介紹了SpringBoot實現微信掃碼登錄的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

微信掃碼登錄的具體流程涉及多個步驟,從前期的配置到后端代碼的實現,下面詳細介紹每個步驟:

1. 注冊和配置

  • 注冊微信賬號:首先在微信注冊一個賬號。
  • 獲取應用的 AppID 和 AppSecret:在微信上創(chuàng)建應用后,你會得到 AppID 和 AppSecret,這兩個值在后續(xù)步驟中會用到。
  • 配置授權回調域:在微信設置中,配置授權回調域名。這個域名是微信在用戶授權后回調的地址,例如 yourdomain.com。

2. 前端代碼準備

在前端頁面上添加一個按鈕或鏈接,讓用戶點擊后開始微信掃碼登錄流程。

<a href="/wechat/login" rel="external nofollow" >微信登錄</a>

3. 后端代碼實現

3.1 配置項目

首先,在 application.properties 文件中添加微信應用的配置:

wechat.app-id=YOUR_APP_ID
wechat.app-secret=YOUR_APP_SECRET
wechat.redirect-uri=http://yourdomain.com/wechat/callback

3.2 創(chuàng)建微信掃碼登錄控制器

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.client.RestTemplate;

import java.util.UUID;

@Controller
public class WeChatLoginController {

    @Value("${wechat.app-id}")
    private String appId;

    @Value("${wechat.app-secret}")
    private String appSecret;

    @Value("${wechat.redirect-uri}")
    private String redirectUri;

    @GetMapping("/wechat/login")
    public String wechatLogin() {
        String state = UUID.randomUUID().toString();
        String wechatUrl = "https://open.weixin.qq.com/connect/qrconnect?appid=" + appId
                + "&redirect_uri=" + redirectUri
                + "&response_type=code&scope=snsapi_login&state=" + state;
        return "redirect:" + wechatUrl;
    }

    @GetMapping("/wechat/callback")
    public String wechatCallback(String code, String state, Model model) {
        String tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId
                + "&secret=" + appSecret
                + "&code=" + code
                + "&grant_type=authorization_code";

        RestTemplate restTemplate = new RestTemplate();
        WeChatAccessTokenResponse response = restTemplate.getForObject(tokenUrl, WeChatAccessTokenResponse.class);

        if (response != null) {
            String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + response.getAccessToken()
                    + "&openid=" + response.getOpenId();
            WeChatUserInfo userInfo = restTemplate.getForObject(userInfoUrl, WeChatUserInfo.class);
            model.addAttribute("user", userInfo);
            return "userProfile";
        }

        return "error";
    }

    static class WeChatAccessTokenResponse {
        private String accessToken;
        private String openId;

        // Getters and setters
    }

    static class WeChatUserInfo {
        private String openId;
        private String nickname;
        private String sex;
        private String province;
        private String city;
        private String country;
        private String headimgurl;

        // Getters and setters
    }
}

3.3 創(chuàng)建用戶信息展示頁面

在 src/main/resources/templates 目錄下創(chuàng)建 userProfile.html 文件,用于顯示用戶信息:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>User Profile</title>
</head>
<body>
<h1>User Profile</h1>
<div>
    <img th:src="${user.headimgurl}" alt="User Avatar"/>
    <p>Nickname: <span th:text="${user.nickname}"></span></p>
    <p>Country: <span th:text="${user.country}"></span></p>
    <p>Province: <span th:text="${user.province}"></span></p>
    <p>City: <span th:text="${user.city}"></span></p>
</div>
</body>
</html>

4. 執(zhí)行流程

  • 用戶點擊微信登錄鏈接:用戶點擊前端頁面上的微信登錄鏈接,瀏覽器會重定向到微信的授權頁面。
  • 用戶掃碼并授權:用戶在微信授權頁面掃碼并授權,微信會將授權結果(包含授權碼 code)回調到你配置的回調URL。
  • 后端處理回調請求:后端接收到微信的回調請求,通過授權碼 code 獲取訪問令牌 access_token 和用戶的 openid
  • 獲取用戶信息:使用 access_token 和 openid 調用微信API獲取用戶詳細信息。
  • 展示用戶信息:將獲取到的用戶信息展示在頁面上。

5. 處理異常和安全性

實際應用中,處理異常和安全性是非常重要的,包括但不限于:

  • 防止CSRF攻擊:使用state參數驗證請求的合法性。
  • 處理網絡異常:網絡請求可能會失敗,需要處理超時和錯誤響應。
  • 存儲用戶信息:將用戶信息存儲在數據庫中,便于后續(xù)使用。

以上步驟基本上可以實現微信掃碼登錄功能。如果需要更詳細的實現,可以參考微信開放平臺的官方文檔。

到此這篇關于SpringBoot實現微信掃碼登錄的示例代碼的文章就介紹到這了,更多相關SpringBoot 微信掃碼登錄內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java PreparedStatement用法詳解

    Java PreparedStatement用法詳解

    這篇文章主要介紹了Java PreparedStatement用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 解析電子郵件的基本概念及JavaMail API郵件功能使用

    解析電子郵件的基本概念及JavaMail API郵件功能使用

    這篇文章主要介紹了電子郵件的基本概念及JavaMail API郵件功能使用,包括用Java來發(fā)送郵件的示例,需要的朋友可以參考下
    2016-02-02
  • Java 1.8使用數組實現循環(huán)隊列

    Java 1.8使用數組實現循環(huán)隊列

    這篇文章主要為大家詳細介紹了Java 1.8使用數組實現循環(huán)隊列,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Spring?IOC容器FactoryBean工廠Bean實例

    Spring?IOC容器FactoryBean工廠Bean實例

    這篇文章主要為大家介紹了Spring?IOC容器FactoryBean工廠Bean實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Java異常基礎知識解析

    Java異?;A知識解析

    這篇文章主要介紹了Java異常基礎知識解析,具有一定借鑒價值,需要的朋友可以資參考下。
    2017-12-12
  • Java中定時任務的6種實現方式

    Java中定時任務的6種實現方式

    這篇文章主要給大家分享的是Java中定時任務的6種實現方式,幾乎在所有的項目中,定時任務的使用都是不可或缺的,如果使用不當甚至會造成資損,下面文章我們就來看看Java中定時任務的具體使用方式吧
    2021-10-10
  • Java多線程yield心得分享

    Java多線程yield心得分享

    前幾天復習了一下多線程,發(fā)現有許多網上講的都很抽象,所以,自己把網上的一些案例總結了一下
    2013-12-12
  • spring級聯(lián)屬性賦值的兩種方式解析

    spring級聯(lián)屬性賦值的兩種方式解析

    這篇文章主要介紹了spring級聯(lián)屬性賦值的兩種方式解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Java 深入探討設計模式之原型模式篇

    Java 深入探討設計模式之原型模式篇

    設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性
    2021-10-10
  • 詳解JAVA 弱引用

    詳解JAVA 弱引用

    這篇文章主要介紹了 JAVA 弱引用的相關資料,幫助大家更好的理解和學習java引用對象,感興趣的朋友可以了解下
    2020-08-08

最新評論

光泽县| 盖州市| 康乐县| 托克托县| 沙雅县| 楚雄市| 蒙城县| 华亭县| 齐河县| 蓬安县| 桑日县| 大厂| 女性| 克东县| 宁乡县| 衡东县| 繁峙县| 盐边县| 泸溪县| 远安县| 抚州市| 时尚| 高台县| 廉江市| 中山市| 瓮安县| 沐川县| 迁安市| 洞头县| 天峻县| 灵川县| 阿坝县| 兴国县| 莒南县| 崇仁县| 石屏县| 安塞县| 长兴县| 桂林市| 萨迦县| 武汉市|