国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序登錄獲取用戶唯一標識OpenId,(SpringBoot項目)

這篇具有很好參考價值的文章主要介紹了微信小程序登錄獲取用戶唯一標識OpenId,(SpringBoot項目)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

微信小程序的登錄,需要獲取到用戶的唯一標識OpenId,這里只涉及到后端代碼,所以前提是前端申請了一個小程序并且有了appid和secret。

文章目錄

一、微信小程序登錄流程

二、代碼實現(xiàn)

1.引入相關(guān)依賴

2.代碼實現(xiàn)

實際項目經(jīng)驗分享


一、微信小程序登錄流程

先上官方開發(fā)文檔連接

小程序登錄 | 微信開發(fā)文檔

小程序openid,第三方服務(wù),微信小程序,spring boot,maven

????????上面就是微信的官方開發(fā)文檔,在獲取openid之前,需要小程序端調(diào)用官方提供的接口wx.login()去獲取code(臨時登入憑證),通過自己的后端請求,把code傳給到服務(wù)端(自己的后端),服務(wù)端根據(jù) 小程序的appid+secret+js_code+grant_type去調(diào)用微信提供好的接口,獲取到session_key和openid,openId就是用戶在這個小程序中的唯一標識,拿到OpenId后,我們就能進行相關(guān)操作,處理好后返回數(shù)據(jù)給小程序端。

小程序openid,第三方服務(wù),微信小程序,spring boot,maven

二、代碼實現(xiàn)

1.引入相關(guān)依賴

????????由于項目中需要使用到微信的第三方接口的調(diào)用,以及對返回json數(shù)據(jù)的解析,在這我強烈推薦由國人生產(chǎn)的HuTool工具包,里面有許多方便的接口,比如第三方接口的調(diào)用,Json數(shù)據(jù)的解析與轉(zhuǎn)換,隨機數(shù)字的生成;可以提高效率。

        <!--hutool具包-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.4.0</version>
        </dependency>

2.代碼實現(xiàn)

代碼如下:

代碼中需要用到的參數(shù)要根據(jù)自己申請的小程序中的參數(shù)對應(yīng)

package com.lyj.ylwechat.util;

import cn.hutool.core.codec.Base64;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

import org.bouncycastle.jce.provider.BouncyCastleProvider;


import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.AlgorithmParameters;
import java.security.Security;
import java.util.Arrays;
import java.util.HashMap;

public class WeChatUtil {

    public static JSONObject getSessionKeyOrOpenId(String code) {
        //微信小程序官方接口
        String requestUrl = "https://api.weixin.qq.com/sns/jscode2session";
        //接口所需參數(shù)
        HashMap<String, Object> requestUrlParam = new HashMap<>();
        //小程序appId
        requestUrlParam.put("appid", "wx08613a542bab");
        //小程序secret
        requestUrlParam.put("secret", "5f929f8894a2f7d58ef5d0ef1d6");
        //小程序端返回的code
        requestUrlParam.put("js_code", code);
        //默認參數(shù),固定寫死即可
        requestUrlParam.put("grant_type", "authorization_code");
        //發(fā)送post請求讀取調(diào)用微信接口獲取openid用戶唯一標識
        String result = HttpUtil.get(requestUrl, requestUrlParam);
        JSONObject jsonObject = JSONUtil.parseObj(result);
        String openid = jsonObject.get("openid", String.class);
        return jsonObject;
    }

    public static JSONObject getUserInfo(String encryptedData, String sessionKey, String iv) throws Exception {
        // 被加密的數(shù)據(jù)
        byte[] dataByte = Base64.decode(encryptedData);
        // 加密秘鑰
        byte[] keyByte = Base64.decode(sessionKey);
        // 偏移量
        byte[] ivByte = Base64.decode(iv);
        try {
            // 如果密鑰不足16位,那么就補足.  這個if 中的內(nèi)容很重要
            int base = 16;
            if (keyByte.length % base != 0) {
                int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
                byte[] temp = new byte[groups * base];
                Arrays.fill(temp, (byte) 0);
                System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
                keyByte = temp;
            }
            // 初始化
            Security.addProvider(new BouncyCastleProvider());
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
            SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
            AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
            parameters.init(new IvParameterSpec(ivByte));
            // 初始化
            cipher.init(Cipher.DECRYPT_MODE, spec, parameters);
            byte[] resultByte = cipher.doFinal(dataByte);
            if (null != resultByte && resultByte.length > 0) {
                String result = new String(resultByte, "UTF-8");
                return JSONUtil.parseObj(result);
            }
        } catch (Exception e) {
        }
        return null;
    }
}


實際項目經(jīng)驗分享

????????上面僅僅是獲取到了用戶在申請小程序端中的唯一標識Openid,拿到OpenId等信息之后,可以把用戶信息保存到數(shù)據(jù)庫。將openid保存下來,與token(自定義登入狀態(tài))來進行關(guān)聯(lián),最后把小程序需要的數(shù)據(jù)返回給小程序端,以后就通過token來維護用戶登入狀態(tài)。文章來源地址http://www.zghlxwxcb.cn/news/detail-531961.html

到了這里,關(guān)于微信小程序登錄獲取用戶唯一標識OpenId,(SpringBoot項目)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【微信小程序】通過云函數(shù)獲取用戶openid

    1.pages同級目錄下新建新文件夾,命名為cloudFunctions(其他名字也可以)。 2.project.config.json中添加以下內(nèi)容,值為上一步創(chuàng)建的文件夾名字。編譯一次后上一步創(chuàng)建的文件夾前圖標就帶“云”了。 3.app.js內(nèi)的App中添加 1.右擊cloudFunctions文件夾,點擊【新建Node.js云函數(shù)】,命名為

    2024年02月10日
    瀏覽(94)
  • 關(guān)于微信小程序如何調(diào)用wx.login獲取openId和用戶信息

    關(guān)于微信小程序如何調(diào)用wx.login獲取openId和用戶信息

    首先我們需要在微信開發(fā)小工具獲取code臨時登錄憑證,下面是js文件也就是一些需要調(diào)用的函數(shù)。需要做這個的話我們需要上微信公眾平臺獲取AppId和AppSecret 這個是頁面 這是獲取到的code 本來獲取用戶信息是getUserInfo但是微信官方已經(jīng)把那個接口廢棄了,只能獲取到一些默認

    2024年02月11日
    瀏覽(23)
  • 獲取微信小程序用戶的code、openid、session_key

    獲取微信小程序用戶的code、openid、session_key

    1、安裝微信開發(fā)者工具: 在你的電腦上安裝微信小程序的開發(fā)者工具。你可以從微信開放平臺官網(wǎng)下載并安裝適用于你的操作系統(tǒng)的開發(fā)者工具。 2、注冊微信開放平臺賬號: 如果你還沒有微信開放平臺賬號,需要注冊一個。你可以在微信開放平臺注冊頁面進行注冊。 3、創(chuàng)

    2024年02月03日
    瀏覽(20)
  • 微信小程序通過web-view網(wǎng)頁授權(quán)獲取用戶公眾號OpenID

    微信小程序通過web-view網(wǎng)頁授權(quán)獲取用戶公眾號OpenID

    第一步: 通過該地址 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfot=sandbox/index 獲取到微信公眾號測試號AppID與appsecret (測試公眾號可以測試使用,個人公眾號不允許使用。微信認證服務(wù)號可以使用,微信認證訂閱號不可以使用)。 接口權(quán)限查看鏈接: https://developers.weix

    2024年02月08日
    瀏覽(27)
  • 2023年最新微信小程序獲取用戶openid、頭像昵稱的填寫能力和方法原生寫法

    2023年最新微信小程序獲取用戶openid、頭像昵稱的填寫能力和方法原生寫法

    大家好,下面是我身為小白分享給小白哈, 不懂就問相互學(xué)習(xí)共同進步! 親測自用原生代碼,感謝大神指點賜教鼓勵勿噴; 只需9個一鍵復(fù)制粘貼步驟一氣呵成; 先來 本文最終主要實現(xiàn)效果 : 獲取微信小程序用戶頭像昵稱的填寫能力和方法原生寫法 一:先捋一捋思路邏輯

    2024年02月08日
    瀏覽(23)
  • 微信小程序使用openid生成唯一數(shù)字ID(哈希算法)

    引入 crypto-js 庫和云函數(shù)所需的模塊。 定義了一個 convertToUniqueDigits 函數(shù),接收兩個參數(shù):需要轉(zhuǎn)換的字符串和返回的結(jié)果的數(shù)字位數(shù)。 ????????在函數(shù)內(nèi)部,使用 sha256 函數(shù)將字符串轉(zhuǎn)換為哈希值,然后將哈希值轉(zhuǎn)換為數(shù)字,并將結(jié)果映射到指定的位數(shù)。 ????????如

    2024年02月16日
    瀏覽(18)
  • 微信小程序中使用UUID創(chuàng)建唯一標識

    微信小程序中使用UUID創(chuàng)建唯一標識

    1,在小程序根目錄下的utils文件夾創(chuàng)建一個名為uuid.js文件,將下列代碼粘貼上去: const?uuid?=?function?()?{ ??var?s?=?[]; ??var?hexDigits?=?\\\"0123456789abcdef\\\"; ??for?(var?i?=?0;?i??36;?i++)?{ ????s[i]?=?hexDigits.substr(Math.floor(Math.random()?*?0x10),?1); ??} ??s[14]?=?\\\"4\\\";? ??s[19]?

    2024年02月04日
    瀏覽(21)
  • 微信小程序登錄,解決無法獲取用戶信息方法

    在上面的代碼中,首先定義了應(yīng)用的AppID和AppSecret。然后,實現(xiàn)了獲取微信用戶access_token的方法getAccessToken()和獲取微信用戶信息的方法getUserInfo()。其中,getAccessToken()方法需要傳入微信小程序登錄時獲取的code,會返回一個包含access_token和openid的Map;getUserInfo()方法需要傳入用戶

    2024年02月11日
    瀏覽(21)
  • 【微信小程序】使用微信API獲取用戶信息實現(xiàn)登錄

    實現(xiàn)步驟 1. 通過定義button按鈕點擊事件,點擊登錄后觸發(fā)事件 2. 通過 wx.getUserProfile API 調(diào)用用戶信息 3. 獲取成功就將數(shù)據(jù)存儲到本地存儲中,使用 wx.setStorageSync(\\\'user\\\',?user) 4. 存儲完獲取本地數(shù)據(jù) wx.getStorageSync(\\\'user\\\') 5. 頁面渲染數(shù)據(jù) 實現(xiàn)登錄 wxml頁面 js頁面? wxss頁面

    2024年02月05日
    瀏覽(16)
  • 【微信小程序】如何獲取用戶手機號授權(quán)登錄

    【微信小程序】如何獲取用戶手機號授權(quán)登錄

    目前該接口針對非個人開發(fā)者,且完成了認證的小程序開放(不包含海外主體),也就是說只針對企業(yè)認證小程序開放。若用戶舉報較多或被發(fā)現(xiàn)在不必要場景下使用,微信有權(quán)永久回收該小程序的該接口權(quán)限。 在使用該接口時,用戶可使用微信綁定手機號進行授權(quán),也添加

    2024年02月16日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包