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

node微信小程序登錄實現(xiàn)登錄的項目實踐

 更新時間:2023年09月12日 09:26:48   作者:阿山同學(xué).  
登陸流程是指小程序用戶進行授權(quán)登陸,即獲取用戶的微信賬號等信息本文就來介紹一下node微信小程序登錄實現(xiàn)登錄,具有一定的參考價值,感興趣的可以了解一下

好久不見兄弟們這段時間比較忙

需要使用到的模塊

npm i axios
npm i uuid

廢話少說直接上可cv(bai piao)代碼

const axios = require("axios");
const uuid = require("uuid");
// 微信小程序的apikey這些
const wxKey = require("../../../main.js").wx;
// wx: {
// 	// 小程序 appid
// 	appid: "xxx",
// 	// 小程序 appSecret
// 	secret: "xxx",
// },
/**
 * @param {code,mode} req
 * @param {wx.login Code} code
 * @param {階段} mode
 * @param {*返回} reust
 */
// res的code返回 200/400 直接下發(fā)用戶信息/創(chuàng)建用戶
module.exports = async (req, reust) => {
	// 獲取從客戶端上傳上來的key
	try {
		let { code } = req.body;
		let { appid, secret } = wxKey;
		let openid;
		if (!code) {
			return Promise.reject("沒有code參數(shù)");
		}
		await axios
			.get("https://api.weixin.qq.com/sns/jscode2session", {
				params: {
					appid: appid,
					secret: secret,
					js_code: code,
					grant_type: "authorization_code",
				},
			})
			.then((response) => {
				if (response.data.errcode) {
					return Promise.reject("非法的用戶憑證");
				}
				openid = response.data.openid;
			});
		// openid 這個參數(shù)在這里就已經(jīng)拿到了用戶的openid
	} catch (err) {
		// 出錯了執(zhí)行
	}
};

下面展示我的完整代碼

const axios = require("axios");
const uuid = require("uuid");
const wxKey = require("../../../main.js").wx;
const db = require("../../../api/mysql.js");
const senf = require("../../../api/respond");
/**
 * @param {code,mode} req
 * @param {wx.login Code} code
 * @param {階段} mode
 * @param {*返回} reust
 */
// res的code返回 200/400 直接下發(fā)用戶信息/創(chuàng)建用戶
module.exports = async (req, reust) => {
	// 獲取從客戶端上傳上來的key
	try {
		let { code } = req.body;
		let { appid, secret } = wxKey;
		let openid;
		if (!code) {
			return Promise.reject("沒有code參數(shù)");
		}
		await axios
			.get("https://api.weixin.qq.com/sns/jscode2session", {
				params: {
					appid: appid,
					secret: secret,
					js_code: code,
					grant_type: "authorization_code",
				},
			})
			.then((response) => {
				if (response.data.errcode) {
					return Promise.reject("非法的用戶憑證");
				}
				openid = response.data.openid;
			});
		let userinfo = await searchUserOpenId(openid);
		if (userinfo.length !== 0) {
			reust.send(senf.init(200, userinfo[0]));
		} else {
			// 創(chuàng)建用戶
			let creatUserinfoStatus = await CreateUserinfo({
				hash: uuid.v4(),
				name: "",
				openid: openid,
				avatar:
					"https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0",
			});
			console.log("creatUserinfoStatus", creatUserinfoStatus);
			reust.send(senf.init(200, creatUserinfoStatus));
		}
		console.log("userinfo", userinfo);
	} catch (err) {
		// 用戶沒有被創(chuàng)建等...
		console.log("err", err);
		reust.send(senf.init(400, err || "請檢查網(wǎng)絡(luò)環(huán)境"));
	}
};
// 檢查是否有openid如果有的話就直接查數(shù)據(jù)沒有的話就彈登錄
function searchUserOpenId(openid) {
	return new Promise((resolve, reject) => {
		// 查找用戶
		let sql = db.senf.data.user.AuthUser;
		db.query(sql, [`%${openid}%`], (err, results) => {
			resolve(results);
		});
	});
}
// 創(chuàng)建用戶信息
function CreateUserinfo(userinfo) {
	if (userinfo.length < 5) {
		return Promise.reject();
	}
	console.log("userinfo", userinfo);
	// 創(chuàng)建用戶
	return new Promise((resolve, reject) => {
		let sql = db.senf.data.user.createUser;
		// 查找用戶
		db.query(
			sql,
			[
				userinfo.name,
				userinfo.openid,
				userinfo.avatar,
				userinfo.hash,
				new Date(),
			],
			(err, results) => {
				console.log("err", err);
				if (err) {
					reject("創(chuàng)建用戶失敗");
				} else {
					resolve(userinfo);
				}
			}
		);
	});
}

到此這篇關(guān)于node微信小程序登錄實現(xiàn)登錄的項目實踐的文章就介紹到這了,更多相關(guān)node小程序登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • jwt在express中token的加密解密實現(xiàn)過程

    jwt在express中token的加密解密實現(xiàn)過程

    文章詳細(xì)介紹了JWT在Node.js中的生成和驗證過程,包括設(shè)置密鑰、使用中間件進行token驗證等步驟,并提供了一個完整的示例代碼,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 使用nodejs實現(xiàn)JSON文件自動轉(zhuǎn)Excel的工具(推薦)

    使用nodejs實現(xiàn)JSON文件自動轉(zhuǎn)Excel的工具(推薦)

    這篇文章主要介紹了使用nodejs實現(xiàn),JSON文件自動轉(zhuǎn)Excel的工具,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Node.js匹配文件夾所有文件關(guān)鍵字的完整教程

    Node.js匹配文件夾所有文件關(guān)鍵字的完整教程

    本文基于nodejs構(gòu)建一個自動化檢測工具:讀取 Excel 中的關(guān)鍵字,在指定目錄的所有文件中搜索是否存在對應(yīng)內(nèi)容,最終生成帶標(biāo)記結(jié)果的 Excel 文件,需要的朋友可以參考下
    2025-04-04
  • Nodejs極簡入門教程(二):定時器

    Nodejs極簡入門教程(二):定時器

    這篇文章主要介紹了Nodejs極簡入門教程(二):定時器,本文講解了setTimeout、setInterval、setImmediate及process.nextTick等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • 安裝nvm實現(xiàn)切換node

    安裝nvm實現(xiàn)切換node

    這篇文章主要介紹了安裝nvm實現(xiàn)切換node的詳細(xì)過程,本文給大家講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • node.js 基于cheerio的爬蟲工具的實現(xiàn)(需要登錄權(quán)限的爬蟲工具)

    node.js 基于cheerio的爬蟲工具的實現(xiàn)(需要登錄權(quán)限的爬蟲工具)

    這篇文章主要介紹了node.js 基于cheerio的爬蟲工具的實現(xiàn)(需要登錄權(quán)限的爬蟲工具) ,需要的朋友可以參考下
    2019-04-04
  • vscode安裝教程以及配置node.js環(huán)境全過程

    vscode安裝教程以及配置node.js環(huán)境全過程

    這篇文章主要給大家介紹了關(guān)于vscode安裝教程以及配置node.js環(huán)境的相關(guān)資料,VSCode是一款由微軟開發(fā)的輕量級編輯器,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • node puppeteer(headless chrome)實現(xiàn)網(wǎng)站登錄

    node puppeteer(headless chrome)實現(xiàn)網(wǎng)站登錄

    這篇文章主要介紹了node puppeteer(headless chrome)實現(xiàn)網(wǎng)站登錄,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 爬蟲利器Puppeteer實戰(zhàn)

    爬蟲利器Puppeteer實戰(zhàn)

    本文詳細(xì)的介紹了什么是Puppeteer以及使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 深入理解Node.js中import.meta的使用

    深入理解Node.js中import.meta的使用

    import.meta提供模塊的上下文信息,如文件URL、解析模塊路徑、判斷模塊是否為入口等,本文就來介紹一下Node.js中import.meta的使用,具有一定的參考價值,感興趣的可以了解一下
    2026-01-01

最新評論

光泽县| 玉环县| 拜城县| 忻城县| 许昌市| 基隆市| 宜城市| 澄城县| 黎城县| 赫章县| 科技| 南雄市| 进贤县| 双牌县| 白朗县| 进贤县| 阿坝| 林甸县| 青浦区| 玛曲县| 泊头市| 新巴尔虎左旗| 呼伦贝尔市| 甘南县| 益阳市| 慈利县| 鄂托克旗| 馆陶县| 丽水市| 安新县| 巴南区| 长春市| 邻水| 偏关县| 沂源县| 五家渠市| 黄平县| 集贤县| 德州市| 麻栗坡县| 余干县|