node微信小程序登录实现登录

这篇具有很好参考价值的文章主要介绍了node微信小程序登录实现登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

node微信小程序登录实现登录

好久不见兄弟们这段时间比较忙文章来源地址https://www.toymoban.com/news/detail-706215.html

  • 需要使用到的模块
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 直接下发用户信息/创建用户
module.exports = async (req, reust) => {
	// 获取从客户端上传上来的key
	try {
		let { code } = req.body;
		let { appid, secret } = wxKey;
		let openid;
		if (!code) {
			return Promise.reject("没有code参数");
		}
		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 这个参数在这里就已经拿到了用户的openid
	} catch (err) {
		// 出错了执行
	}
};

下面展示我的完整代码

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 直接下发用户信息/创建用户
module.exports = async (req, reust) => {
	// 获取从客户端上传上来的key
	try {
		let { code } = req.body;
		let { appid, secret } = wxKey;
		let openid;
		if (!code) {
			return Promise.reject("没有code参数");
		}
		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 {
			// 创建用户
			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) {
		// 用户没有被创建等...
		console.log("err", err);
		reust.send(senf.init(400, err || "请检查网络环境"));
	}
};

// 检查是否有openid如果有的话就直接查数据没有的话就弹登录
function searchUserOpenId(openid) {
	return new Promise((resolve, reject) => {
		// 查找用户
		let sql = db.senf.data.user.AuthUser;
		db.query(sql, [`%${openid}%`], (err, results) => {
			resolve(results);
		});
	});
}

// 创建用户信息
function CreateUserinfo(userinfo) {
	if (userinfo.length < 5) {
		return Promise.reject();
	}
	console.log("userinfo", userinfo);
	// 创建用户
	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("创建用户失败");
				} else {
					resolve(userinfo);
				}
			}
		);
	});
}

到了这里,关于node微信小程序登录实现登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Node.js的线上零食铺微信小程序购物商城的设计与实现

    摘要 随着移动互联网的普及和消费者购物习惯的改变,线上购物商城逐渐成为人们日常生活中不可或缺的一部分。本文旨在设计并实现一个基于Node.js的线上零食铺微信小程序购物商城,以满足用户对便捷、快速、个性化购物体验的需求。本文首先分析了线上零食购物商城的

    2024年02月22日
    浏览(35)
  • 微信小程序搭载node.js服务器(简)

    此文章用到的是用node.js搭载的服务器! 检测电脑是否安装node.js,可以用【 cmd/Power shell 】命令检测,也可以用【git-bash】,这里就用git-bash进行演示,没有git-bash可以安装一下。 如果有对应的版本号即为已经安装完成! 未安装的附上链接了: node.js安装 : Download | Node.js Gi

    2023年04月08日
    浏览(36)
  • 基于Node.js的酒店民宿微信小程序的设计与开发

    摘要 随着移动互联网的普及和人们生活水平的提升,旅游住宿需求日益旺盛。酒店和民宿作为主要的住宿方式,在市场上的竞争也愈发激烈。微信小程序作为一种轻量级、易推广的移动应用形态,为酒店民宿行业提供了全新的服务模式和营销渠道。本文详细阐述了基于Node.

    2024年02月21日
    浏览(32)
  • 微信小程序安装vant组件库过程(利用node.js中的npm)

    最近学完机器学习,闲着无事学一下小程序,安装vant组件库的前提是要拥有一个node.js(npm在其中),下载完node.js之后,在微信小程序的项目文件中输入命令行安装即可 node.js官网安装地址点击这里  点击Other Downloads  下载windows64位  打开下载之后的安装包 注意:这一步之前

    2024年02月10日
    浏览(45)
  • (附源码)node.js+mysql+node基于微信小程序的校园失物招领小程序 毕业设计072343

    随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序的校园失物招领系统被用户普遍使用,为方便用户能够可以随时进行微信小程序的校园失物招领系

    2024年01月23日
    浏览(38)
  • 微信小程序uniapp健康饮食菜谱系统python+java+node.js+php

    开发具有原生 小程序 体验的服务。小程序在视图层与逻辑层间提供了数据传输和事件系统,提供了自己的视图层以及逻辑层框架,让开发者能够专注于数据与逻辑。框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。在逻辑层做数据修改,在视

    2024年03月16日
    浏览(54)
  • 【微信小程序】实现微信小程序登录(附源码)

    通过 点击登录按钮 , 调用微信接口 wx.getUserProfile拿到微信的个人信息,先 检查是否之前已经登录 ,若没登录则将拿到的个人信息调用后台的接口,把个人信息传给后台, 登录成功之后 把相关信息存储在app.globalData中共享给全局使用 (这里使用微信云开发作为后台,提前建

    2024年02月11日
    浏览(30)
  • 微信小程序,如何实现登录

    业务流程: 1:首先需要一个按钮触发事件 2:调用微信小程序的登录接口wx.login,拿到code 3:调用微信小程序的获取用户信息的接口wx.getUserProfile,拿到用户的个人信息(包括用的昵称以及头像) 4:拿到的个人信息调用后台的接口,八个人信息传给后台,登陆成功并把相关喜喜

    2024年02月03日
    浏览(31)
  • 微信小程序 如何实现登录

    业务流程: 1:首先需要一个按钮触发事件 2:调用微信小程序的登录接口 wx.login ,拿到code 3:调用微信小程序的获取用户信息的接口 wx.getUserProfile ,拿到用户的个人信息 4: 拿到的个人信息调用后台的接口,把个人信息传给后台,登录成功并把相关信息存储在本地的缓存中

    2024年02月09日
    浏览(73)
  • 微信小程序实现简单登录界面和登录功能

    客户端开发和学习过程中,登录功能是一个很常见的场景。本文将介绍,微信小程序开发过程中是如何实现登录界面和登录功能的。 话不多说,直接上代码。 (1)index.js文件,代码如下: (2)index.wxml文件,代码如下: (3)index.wxss文件,代码如下: 运行结果如下: 本文介绍了微信

    2024年02月12日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包