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

weixin-java-miniapp微信小程序登陸具體實(shí)現(xiàn)

 更新時(shí)間:2025年02月20日 10:10:29   作者:小哇666  
這篇文章主要介紹了weixin-java-miniapp微信小程序登陸具體實(shí)現(xiàn)的相關(guān)資料,包括用戶授權(quán)、獲取code、發(fā)送到后臺(tái)、后臺(tái)驗(yàn)證并獲取openid和session_key、返回驗(yàn)證結(jié)果等步驟,需要的朋友可以參考下

1. 用戶在小程序中選擇使用微信授權(quán)登錄功能。

2. 小程序調(diào)用 `wx.login` 接口,向微信服務(wù)器發(fā)起登錄請(qǐng)求。

3. 微信服務(wù)器驗(yàn)證小程序的合法性,如果合法,會(huì)返回一個(gè)臨時(shí)登錄憑證 **code** 給小程序。

4. 小程序將收到的 **code** 發(fā)送到后臺(tái)服務(wù)器。

5. 后臺(tái)服務(wù)器接收到 **code** 后,使用自己的 **AppID** 和 **AppSecret**,以及收到的 **code**,調(diào)用微信接口向微信服務(wù)器發(fā)送請(qǐng)求,獲取用戶的唯一標(biāo)識(shí) **openid** 和會(huì)話密鑰 **session_key**。

6. 后臺(tái)服務(wù)器根據(jù) **openid** 和 **session_key**,進(jìn)行用戶身份的驗(yàn)證和處理,可以將用戶信息存儲(chǔ)在后臺(tái)數(shù)據(jù)庫中。

7. 后臺(tái)服務(wù)器將驗(yàn)證結(jié)果返回給小程序。

8. 小程序根據(jù)收到的驗(yàn)證結(jié)果,進(jìn)行相應(yīng)的登錄狀態(tài)處理,如登錄成功后,顯示用戶相關(guān)的個(gè)性化內(nèi)容。

**需要注意的是**:        

- 小程序在獲取到 **code** 后,必須將其發(fā)送到后臺(tái)服務(wù)器進(jìn)行二次驗(yàn)證和處理,因?yàn)橹苯邮褂?**code** 進(jìn)行用戶登錄是不安全的。

- 通過后臺(tái)服務(wù)器的驗(yàn)證,可以確保用戶的身份和信息安全。

- 同時(shí),后臺(tái)服務(wù)器也可以擁有更多的靈活性和自定義功能,如用戶信息的持久化存儲(chǔ)和一些業(yè)務(wù)邏輯的處理。

具體實(shí)現(xiàn)

后端

1 pom.xml,yml文件配置

 <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-miniapp</artifactId>
            <version>4.5.5.B</version>
</dependency>

---------------------------------------

wx:
  miniapp:
    appId: wxcb96214be4598129  # 小程序微信公眾平臺(tái)appId
    secret: 039b0b4bde17b9358064fcacc56b7fc3  # 小程序微信公眾平臺(tái)api秘鑰

---------------------------------------

2 屬性注入,配置文件編寫

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@Data
@ConfigurationProperties(prefix = "wx.miniapp")
public class WxConfigProperties {
    private String appId;
    private String secret;
}
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class WxConfigOperator {

    @Autowired
    private WxConfigProperties wxConfigProperties;

    @Bean
    public WxMaService wxMaService() {

        //微信小程序id和秘鑰
        WxMaDefaultConfigImpl wxMaConfig = new WxMaDefaultConfigImpl();
        wxMaConfig.setAppid(wxConfigProperties.getAppId());
        wxMaConfig.setSecret(wxConfigProperties.getSecret());

        WxMaService service = new WxMaServiceImpl();
        service.setWxMaConfig(wxMaConfig);
        return service;
    }
}

3 小程序登陸接口

import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
@CrossOrigin
public class CustomerInfoController {

    @Autowired
    private WxMaService wxMaService;

    // 微信小程序登錄接口
    @RequestMapping("/wx_login/[code]")
    public Object login(@PathVariable String code) throws WxErrorException {
        WxMaJscode2SessionResult sessionInfo =
                wxMaService.getUserService().getSessionInfo(code);
        //微信號(hào)標(biāo)識(shí)
        System.out.println("sessionInfo.getOpenid() = " + sessionInfo.getOpenid());
        return sessionInfo;
    }
    
}

前端核心代碼

    // 登錄
    wx.login({
      success: res => {
        console.error(res.code)
        // 發(fā)送 res.code 到后臺(tái)換取 openId, sessionKey, unionId
        console.error(res)

         // oauth code
         const code = res.code;
      
         // 請(qǐng)求開發(fā)者服務(wù)器,獲取oauth token信息
         wx.request({
           url: `http://localhost:8080/wx_login/$[code]`, 
           header:{'content-type':'application/json'},
           method: 'POST',
           success(res){
             const data = res.data;
             console.error(data)
           }
         })
      },
    })

總結(jié) 

到此這篇關(guān)于weixin-java-miniapp微信小程序登陸具體實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)weixin-java-miniapp微信小程序登陸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • bootstrap table動(dòng)態(tài)加載數(shù)據(jù)示例代碼

    bootstrap table動(dòng)態(tài)加載數(shù)據(jù)示例代碼

    本篇文章主要介紹了bootstrap table動(dòng)態(tài)加載數(shù)據(jù)示例代碼,可以實(shí)現(xiàn)點(diǎn)擊選擇按鈕,彈出模態(tài)框,加載出關(guān)鍵詞列表,有興趣的可以了解一下。
    2017-03-03
  • TypeScript獨(dú)立的解析器typescript.dll

    TypeScript獨(dú)立的解析器typescript.dll

    本文主要介紹了TypeScript獨(dú)立的解析器typescript.dll,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-05-05
  • 如何改進(jìn)javascript代碼的性能

    如何改進(jìn)javascript代碼的性能

    在web應(yīng)用中,應(yīng)用了大量的Javascript,因此代碼的執(zhí)行效率變得尤為重要,也就是性能!為了提高JS的性能,我們應(yīng)該掌握一些基本的性能優(yōu)化方式,并讓它成為我們書寫代碼的習(xí)慣。下面介紹幾種優(yōu)化性能的方式,很多初學(xué)者甚至有經(jīng)驗(yàn)的開發(fā)者也會(huì)忽略,希望對(duì)你有幫助
    2015-04-04
  • js 彈出對(duì)話框(遮罩)透明,可拖動(dòng)的簡(jiǎn)單實(shí)例

    js 彈出對(duì)話框(遮罩)透明,可拖動(dòng)的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄猨s 彈出對(duì)話框(遮罩)透明,可拖動(dòng)的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • JS實(shí)現(xiàn)頁面數(shù)據(jù)無限加載

    JS實(shí)現(xiàn)頁面數(shù)據(jù)無限加載

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)頁面數(shù)據(jù)無限加載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • javascript移動(dòng)開發(fā)中touch觸摸事件詳解

    javascript移動(dòng)開發(fā)中touch觸摸事件詳解

    這篇文章主要為大家詳細(xì)介紹了javascript移動(dòng)開發(fā)中touch觸摸事件,感興趣的小伙伴們可以參考一下
    2016-03-03
  • js模擬滾動(dòng)條(橫向豎向)

    js模擬滾動(dòng)條(橫向豎向)

    js模擬滾動(dòng)條(橫向豎向),需要的朋友可以參考一下
    2013-02-02
  • JavaScript本地儲(chǔ)存:localStorage、sessionStorage、cookie的使用

    JavaScript本地儲(chǔ)存:localStorage、sessionStorage、cookie的使用

    這篇文章主要介紹了JavaScript本地儲(chǔ)存:localStorage、sessionStorage、cookie的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Javascript 類型轉(zhuǎn)換、封閉函數(shù)及常見內(nèi)置對(duì)象操作示例

    Javascript 類型轉(zhuǎn)換、封閉函數(shù)及常見內(nèi)置對(duì)象操作示例

    這篇文章主要介紹了Javascript 類型轉(zhuǎn)換、封閉函數(shù)及常見內(nèi)置對(duì)象操作,結(jié)合實(shí)例形式分析了JavaScript類型顯示轉(zhuǎn)換、隱式轉(zhuǎn)換、變量作用域、封閉函數(shù)及常用內(nèi)置對(duì)象相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • css transform 3D幻燈片特效實(shí)現(xiàn)步驟解讀

    css transform 3D幻燈片特效實(shí)現(xiàn)步驟解讀

    3D幻燈片特效想必大家以不在陌生至于表現(xiàn)形式一般都是拘泥于傳統(tǒng)接下來為大家介紹下使用css3 transform配合js以及html實(shí)現(xiàn)3D幻燈片特效
    2013-03-03

最新評(píng)論

托里县| 宝丰县| 大港区| 卓尼县| 石屏县| 沙河市| 塔城市| 上杭县| 敦化市| 山东| 万源市| 云梦县| 柳林县| 富顺县| 黄骅市| 阳原县| 新田县| 海丰县| 贵阳市| 西乌珠穆沁旗| 青海省| 云霄县| 新和县| 和静县| 保靖县| 吉木萨尔县| 酒泉市| 绥滨县| 垣曲县| 抚州市| 武安市| 宁晋县| 宁国市| 衢州市| 北流市| 壶关县| 晋江市| 巩留县| 延川县| 武威市| 衢州市|