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

(小程序)后臺交互--個人中心

這篇具有很好參考價值的文章主要介紹了(小程序)后臺交互--個人中心。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、微信登錄流程簡介

二、微信用戶獲取用戶昵稱頭像和昵稱

① wx.getUserProfile ——> 獲取頭像

?三、微信登錄流程代碼詳解

1.bindgetuserinfo——>把小程序端搭建起來

① oa-mini?

2.登錄-小程序

① wx.checkSession?

② wx.login

③ wx.request

3.后臺

① 準備數(shù)據(jù)表

② 反向生成工具生成

③ 準備封裝前端傳過來的數(shù)據(jù)

④ 小程序服器配置

????????⑴導入微信小程序SDK

????????⑵ application.yml

????????⑶ WxProperties

????????⑷ WxConfig

⑤ WxAuthController

3.登錄-小程序

① login.js

② user.js

③ util.js

四、emoji的存儲?


一、微信登錄流程簡介

小程序登錄https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

(小程序)后臺交互--個人中心

  • 說明

    • 調(diào)用 wx.login() 獲取 臨時登錄憑證code ,并回傳到開發(fā)者服務器。

    • 調(diào)用 auth.code2Session 接口,換取 用戶唯一標識 OpenID 、 用戶在微信開放平臺帳號下的唯一標識UnionID(若當前小程序已綁定到微信開放平臺帳號) 和 會話密鑰 session_key。

    • 之后開發(fā)者服務器可以根據(jù)用戶標識來生成自定義登錄態(tài),用于后續(xù)業(yè)務邏輯中前后端交互時識別用戶身份。

  • 注意事項

    1. 會話密鑰 session_key 是對用戶數(shù)據(jù)進行 加密簽名 的密鑰。為了應用自身的數(shù)據(jù)安全,開發(fā)者服務器不應該把會話密鑰下發(fā)到小程序,也不應該對外提供這個密鑰。

    2. 臨時登錄憑證 code 只能使用一次

  • appId 作用說明

    • appid 是微信賬號的唯一標識,這個是固定不變的; 如果了解微信公眾號開發(fā)的就需要注意一下,小程序的appid 和 公眾號的appid 是不一致的

  • session_key 功能說明 微信客戶端通過wx.getUserInfo()獲取用戶的信息 后臺有時候也需要獲取微信客戶端的用戶信息,因此,就需要利用session_key這個秘鑰來從微信平臺中獲取 官方文檔原文 簽名校驗以及數(shù)據(jù)加解密涉及用戶的會話密鑰 session_key。 開發(fā)者應該事先通過 wx.login 登錄流程獲取會話密鑰 session_key 并保存在服務器。為了數(shù)據(jù)不被篡改,開發(fā)者不應該把 session_key 傳到小程序客戶端等服務器外的環(huán)境。

(小程序)后臺交互--個人中心

二、微信用戶獲取用戶昵稱頭像和昵稱

① wx.getUserProfile ——> 獲取頭像

(小程序)后臺交互--個人中心

?參考地址如下以及圖片:

wx.getUserProfile(Object object) | 微信開放文檔

(小程序)后臺交互--個人中心

(小程序)后臺交互--個人中心

當我們點擊微信直接登錄2那個按鈕時----》接著就會訪問你允許你頭像和昵稱---》直接點擊允許

(小程序)后臺交互--個人中心

我們可以去訪問一下,如下圖所示:

(小程序)后臺交互--個人中心

最終效果如下圖所示:

(小程序)后臺交互--個人中心

?三、微信登錄流程代碼詳解

1.bindgetuserinfo——>把小程序端搭建起來

① oa-mini?

(小程序)后臺交互--個人中心

打開我們小程序的后臺:導入項目ssm-oa

(小程序)后臺交互--個人中心

注意:一定要修改maven配置

(小程序)后臺交互--個人中心

修改application.yml文件里面的app-id配置

(小程序)后臺交互--個人中心

跟小程序里面的APPID對應已經(jīng)密鑰

(小程序)后臺交互--個人中心

?如果不對應的話,待會我們在小程序中是登錄不上的,如下圖所示:

(小程序)后臺交互--個人中心

啟動后臺,如下圖所示:

(小程序)后臺交互--個人中心

?返回到小程序,如下圖所示:

(小程序)后臺交互--個人中心

(小程序)后臺交互--個人中心

這樣就說明登錄成功了,如下圖所示:

(小程序)后臺交互--個人中心

最終它就會在數(shù)據(jù)庫里面新增一條數(shù)據(jù),昵稱是我本人,如下圖所示:

(小程序)后臺交互--個人中心

2.登錄-小程序

  1. 執(zhí)行wx.login 登錄獲取小程序端的code

  2. 服務端根據(jù)code去微信端獲取session_key并且緩存;同時生成access_token 保存在小程序端,維持登錄狀態(tài);

  3. 小程序端請求服務端用戶數(shù)據(jù)時,先wx.checkSession,有效就通過access_token 確定用戶,找到session_key;無效就執(zhí)行wx.login重新登錄重新生成access_token,服務端重新獲取session_key;

  4. 小程序端長時間不使用,服務端的session_key會失效,無法再用session_key去微信端獲取數(shù)據(jù),需要小程序端重新執(zhí)行登錄操作; 服務端要獲取session_key 只能通過小程序端的登錄來操作;

① wx.checkSession?

檢查登錄態(tài)是否過期

② wx.login

調(diào)用接口獲取登錄憑證(code)

③ wx.request

請求自己小程序服器,并且攜帶了code,userInfo信息

3.后臺

① 準備數(shù)據(jù)表

DROP TABLE IF EXISTS `wx_user`;
CREATE TABLE `wx_user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用戶名稱',
  `password` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用戶密碼',
  `gender` tinyint(3) NOT NULL DEFAULT 0 COMMENT '性別:0 未知, 1男, 1 女',
  `birthday` date NULL DEFAULT NULL COMMENT '生日',
  `last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '最近一次登錄時間',
  `last_login_ip` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '最近一次登錄IP地址',
  `user_level` tinyint(3) NULL DEFAULT 0 COMMENT '用戶層級 0 普通用戶,1 VIP用戶,2 區(qū)域代理用戶',
  `nickname` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用戶昵稱或網(wǎng)絡名稱',
  `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用戶手機號碼',
  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用戶頭像圖片',
  `weixin_openid` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '微信登錄openid',
  `status` tinyint(3) NOT NULL DEFAULT 0 COMMENT '0 可用, 1 禁用, 2 注銷',
  `add_time` datetime(0) NULL DEFAULT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
  `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '邏輯刪除',
  `share_user_id` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `user_name`(`username`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用戶表' ROW_FORMAT = Compact;

② 反向生成工具生成

  • WxUser.java

  • WxUserMapper.java

  • WxUserMapper.xml

③ 準備封裝前端傳過來的數(shù)據(jù)

  • UserInfo

  • WxLoginInfo

④ 小程序服器配置

⑴導入微信小程序SDK

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

⑵ application.yml

oa:
  wx:
    app-id: wxf13ed7f2838e6ea5
    app-secret: 0acefe2a6804e5569ed742a210040306
    msgDataFormat: JSON

⑶ WxProperties

封裝oa.wx的數(shù)據(jù)

@Data
@Configuration
@ConfigurationProperties(prefix = "oa.wx")
public class WxProperties {
	/**
	 * 設(shè)置微信小程序的appId
	 */
	private String appId;
	/**
	 * 設(shè)置微信小程序的Secret
	 */
	private String appSecret;
	/**
	 * 消息數(shù)據(jù)格式
	 */
	private String msgDataFormat;

}

?⑷ WxConfig

注冊WXMaS而vice

@Configuration
public class WxConfig {
	@Autowired
	private WxProperties properties;

	@Bean
	public WxMaConfig wxMaConfig() {
		WxMaInMemoryConfig config = new WxMaInMemoryConfig();
		config.setAppid(properties.getAppId());
		config.setSecret(properties.getAppSecret());
		config.setMsgDataFormat(properties.getMsgDataFormat());
		return config;
	}

	@Bean
	public WxMaService wxMaService(WxMaConfig maConfig) {
		WxMaService service = new WxMaServiceImpl();
		service.setWxMaConfig(maConfig);
		return service;
	}

}

⑤ WxAuthController

@RequestMapping("/wx/auth")
public class WxAuthController {
    @Autowired
    private WxMaService wxService;
     @PostMapping("login_by_weixin")
    public Object loginByWeixin(@RequestBody WxLoginInfo wxLoginInfo, HttpServletRequest request) {

        //客戶端需攜帶code與userInfo信息
        String code = wxLoginInfo.getCode();
        UserInfo userInfo = wxLoginInfo.getUserInfo();
        if (code == null || userInfo == null) {
            return ResponseUtil.badArgument();
        }
        //調(diào)用微信sdk獲取openId及sessionKey
        String sessionKey = null;
        String openId = null;
        try {
            WxMaJscode2SessionResult result = this.wxService.getUserService().getSessionInfo(code);
            sessionKey = result.getSessionKey();//session id
            openId = result.getOpenid();//用戶唯一標識 OpenID
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (sessionKey == null || openId == null) {
            log.error("微信登錄,調(diào)用官方接口失?。簕}", code);
            return ResponseUtil.fail();
        }else{
            log.info("openId={},sessionKey={}",openId,sessionKey);
        }
        //根據(jù)openId查詢wx_user表
        //如果不存在,初始化wx_user,并保存到數(shù)據(jù)庫中
        //如果存在,更新最后登錄時間
        //....
        // token
        UserToken userToken = null;
        try {
            userToken = UserTokenManager.generateToken(user.getId());
        } catch (Exception e) {
            log.error("微信登錄失敗,生成token失?。簕}", user.getId());
            e.printStackTrace();
            return ResponseUtil.fail();
        }
        userToken.setSessionKey(sessionKey);
        log.info("SessionKey={}",UserTokenManager.getSessionKey(user.getId()));
        Map<Object, Object> result = new HashMap<Object, Object>();
        result.put("token", userToken.getToken());
        result.put("tokenExpire", userToken.getExpireTime().toString());
        result.put("userInfo", userInfo);
        //....


        log.info("【請求結(jié)束】微信登錄,響應結(jié)果:{}", JSONObject.toJSONString(result));

        return ResponseUtil.ok(result);
    }

3.登錄-小程序

① login.js

user.loginByWeixin(res.userInfo).then(res => {
    app.globalData.hasLogin = true;
    wx.navigateBack({
    delta: 1
    })
})

② user.js

function loginByWeixin(userInfo) {
  return new Promise(function(resolve, reject) {
    return login().then((res) => {
      //登錄遠程服務器
      util.request(api.AuthLoginByWeixin, {
        code: res.code,
        userInfo: userInfo
      }, 'POST').then(res => {
        if (res.errno === 0) {
          //存儲用戶信息
          wx.setStorageSync('userInfo', res.data.userInfo);
          wx.setStorageSync('token', res.data.token);
          resolve(res);
        } else {
          reject(res);
        }
      })

將userInfo,token數(shù)據(jù)保存到本地

③ util.js

function request(url, data = {}, method = "GET") {
  return new Promise(function (resolve, reject) {
    wx.request({
      url: url,
      data: data,
      method: method,
      timeout:6000,
      header: {
        'Content-Type': 'application/json',
        'X-OA-Token': wx.getStorageSync('token')
      },

如果使用util.request函數(shù),每次請求都會攜帶'X-OA-Token': wx.getStorageSync('token');而服器已經(jīng)保存了所有的token,所以服器通過token區(qū)分每個客戶端

四、emoji的存儲?

mysql的utf8編碼的一個字符最多3個字節(jié),但是一個emoji表情為4個字節(jié),所以utf8不支持存儲emoji表情。但是utf8的超集utf8mb4一個字符最多能有4字節(jié),所以能支持emoji表情的存儲。

Linux系統(tǒng)中MySQL的配置文件為my.cnf。

Winows中的配置文件為my.ini。

(小程序)后臺交互--個人中心

(小程序)后臺交互--個人中心

my.ini

[mysql]
# 設(shè)置mysql客戶端默認字符集
default-character-set=utf8mb4

[mysqld]
#設(shè)置3306端口
port = 3306
# 設(shè)置mysql的安裝目錄
basedir=F:/Courseware/MySQL/mysql-8.0.18-winx64
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
datadir=F:/Courseware/MySQL/mysql-8.0.18-winx64/data
# 允許最大連接數(shù)
max_connections=200
# 服務端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8mb4
# 創(chuàng)建新表時將使用的默認存儲引擎
default-storage-engine=INNODB

?找到服務----》找到MySQL右鍵重新啟動

(小程序)后臺交互--個人中心

這樣我們存儲了emoji的表情包,如下圖所示:

(小程序)后臺交互--個人中心文章來源地址http://www.zghlxwxcb.cn/news/detail-487295.html

到了這里,關(guān)于(小程序)后臺交互--個人中心的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 微信小程序 - 商城項目 - 個人中心
  • 微信小程序個人中心頁面 案例

    微信小程序個人中心頁面 案例

    微信小程序 開發(fā),經(jīng)常會遇到個人中心頁面 的需求,為了方便大家使用,決定將個人總想頁面進行開源,以供大家參考交流。 一、效果預覽 ? ? ? ?二、源代碼 abouthe.json文件 abouthe.wxml文件 abouthe.wxss文件 abouthe.ts文件

    2024年02月11日
    瀏覽(24)
  • 微信小程序之后臺首頁交互

    微信小程序之后臺首頁交互

    目錄 一.與后臺數(shù)據(jù)進行交互request封裝 后臺準備 測試結(jié)果 ?編輯? ?前端 ?測試結(jié)果 ?二.wxs的介紹以及入門? 測試結(jié)果 后臺準備 pom.xml文件編寫 建立數(shù)據(jù)表 建立數(shù)據(jù)請求地址類? 定義接口類? 測試結(jié)果 ? ?前端 先關(guān)閉mock ? ?先編寫url地址 ?編寫utils.js 編寫index.js? ?編寫

    2024年02月08日
    瀏覽(22)
  • 微信小程序個人中心、我的界面(示例三)

    微信小程序個人中心、我的界面(示例三)

    微信小程序個人中心、我的界面,超簡潔界面,代碼粘貼即用。更多微信小程序界面示例,請進入我的主頁哦! 1、js代碼 2、wxml代碼 3、wxss代碼 4、json代碼 更多微信小程序示例的分享,請進入我的主頁查看哦。。。

    2024年01月24日
    瀏覽(17)
  • 微信小程序個人中心、我的界面(示例一)

    微信小程序個人中心、我的界面(示例一)

    微信小程序個人中心、我的界面,使用button按鈕實現(xiàn)界面布局,更好的將分享好友、獲取頭像等功能展現(xiàn)出來,更多示例界面,請前往我的主頁哦。 1、js代碼: 2、wxml代碼 3、wxss代碼 4、json代碼

    2024年02月11日
    瀏覽(20)
  • 微信小程序個人中心、我的界面(示例二)

    微信小程序個人中心、我的界面(示例二)

    微信小程序個人中心、我的界面,自定義頂部狀態(tài)欄,實現(xiàn)滾動隱藏顯示狀態(tài)信息,界面簡單,代碼粘貼即用。更多微信小程序界面示例,請進入我的主頁哦! 1、js代碼 2、wxml代碼 3、wxss代碼 4、json代碼 更多微信小程序示例的分享,請進入我的主頁查看哦。。。

    2024年02月11日
    瀏覽(26)
  • 微信小程序之會議OA首頁后臺交互

    springboot+mybatis appliation.yml 生成mapper接口,model實體類,mapper映射文件 application.yml 在啟動類 Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強大。它由社區(qū)最早提出和實現(xiàn),ES6 將其寫進了語言標準,統(tǒng)一了用法,原生提供了Promise對象

    2024年02月20日
    瀏覽(36)
  • 【微信小程序】后臺數(shù)據(jù)交互于WX文件使用

    【微信小程序】后臺數(shù)據(jù)交互于WX文件使用

    目錄 一、前期準備 1.1 數(shù)據(jù)庫準備 1.2 后端數(shù)據(jù)獲取接口編寫 1.3 前端配置接口 1.4?封裝微信的request請求 ? 二、WXS文件的使用 2.1 WXS簡介 2.2 WXS使用 ? 三、后臺數(shù)據(jù)交互完整代碼 3.1 WXML 3.2 JS 3.3 WXSS 效果圖? 創(chuàng)建數(shù)據(jù)庫: 注意: 字符集選擇 utf8mb4 ,因為可能用存儲用戶信息,

    2024年02月08日
    瀏覽(27)
  • 微信小程序之首頁-后臺交互及WXS的使用

    微信小程序之首頁-后臺交互及WXS的使用

    目錄 前言? 一.?前后臺數(shù)據(jù)交互及封裝request 1.準備后臺 1.1 配置數(shù)據(jù)源 ?1.2 部分后臺獲取數(shù)據(jù)方法編寫 2.準備前端 2.1封裝Request 2.2?前端JS方法編寫 2.3 前端頁面展示index.wxml 二.WXS的使用 1.簡介 2.WXS優(yōu)化OA系統(tǒng) ?2.1 使用及定義 2.2 導入要使用的項目 2.3 優(yōu)化會議狀態(tài) 2.4 優(yōu)化人

    2024年02月08日
    瀏覽(20)
  • “編輯微信小程序與后臺數(shù)據(jù)交互與微信小程序wxs的使用“

    “編輯微信小程序與后臺數(shù)據(jù)交互與微信小程序wxs的使用“

    在現(xiàn)代移動應用開發(fā)中,微信小程序已經(jīng)成為了一個非常流行和廣泛使用的平臺。為了使小程序能夠展示豐富的內(nèi)容和實現(xiàn)復雜的功能,與后臺數(shù)據(jù)的交互是至關(guān)重要的。同時,微信小程序還提供了一種特殊的腳本語言——wxs,用于增強小程序的業(yè)務邏輯處理能力。本篇博客

    2024年02月08日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包