微信小程序开发(一) 微信登录流程详解
发布时间 - 2026-01-10 22:26:24 点击率:次最近在研究微信小程序开发,非常有意思的一个东西。花了一点时间写了一个微信的登录流程,包括后端接口和小程序代码。

做过微信登录的都知道,我们需要一个标识来记录用户的身份的唯一性,在微信中unionId就是我们所需要的记录唯一ID,那么如何拿到unionId就成了关键,我将项目分为小程序和 后台PHP代码两部分来讲。
微信小程序开放平台
先从我们的小程序代码开始
简单的说一下我们小程序的js代码登录流程
login ->获取code ->getUserInfo获取iv和encryptedData ->传给自己的服务器处理 ->返回给小程序结果
var API_URL = "自己的服务器地址";
Page({
onLoad: function () {
console.log("iv");
wx.login({//login流程
success: function (res) {//登录成功
if (res.code) {
var code = res.code;
wx.getUserInfo({//getUserInfo流程
success: function (res2) {//获取userinfo成功
console.log(res2);
var encryptedData = encodeURIComponent(res2.encryptedData);//一定要把加密串转成URI编码
var iv = res2.iv;
//请求自己的服务器
Login(code,encryptedData,iv);
}
})
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})
code:服务器用来获取sessionKey的必要参数。
IV:加密算法的初始向量,encryptedData:加密过的字符串。
把code iv encryptedData 传递给我们的服务器
function Login(code,encryptedData,iv){ console.log('code='+code+'&encryptedData='+encryptedData+'&iv='+iv);
//创建一个dialog
wx.showToast({
title: '正在登录...',
icon: 'loading',
duration: 10000
});
//请求服务器
wx.request({
url: API_URL,
data: {
code:code,
encryptedData:encryptedData,
iv:iv
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (res) {
// success
wx.hideToast();
console.log('服务器返回'+res.data);
},
fail: function () {
// fail
// wx.hideToast();
},
complete: function () {
// complete
}
})
}
看文档的话,应该知道,我们所需要的unionId就在encryptedData中,所以服务器需要这些信息来把unionId解析出来。
服务器处理逻辑
我php用的是laravel框架
先下载微信的解密demo
下载地址
这里我选择的是PHP代码,把除了demo外的三个class文件,放入我们自己的项目,以后后面调用。
这里讲解一下服务器的处理流程:
通过微信的https://api.weixin.qq.com/sns/jscode2session接口获取seesionKey,然后在通过sessionKey和iv来解密encryptedData数据获取UnionID。
具体文档
/**
* 登录
*
* @return Response
*/
public function weixinlogin( $user_id=null )
{
global $App_Error_Conf,$Gift_Ids,$Server_Http_Path,$Is_Local,$Test_User,$Good_Vcode,$WeiXin_Xd_Conf;
$validator_result = input_validator(array('code','iv','encryptedData'));
if(!empty($validator_result)){
return response($validator_result);
}
$js_code = $_REQUEST['code'];
$encryptedData = $_REQUEST['encryptedData'];
$iv = $_REQUEST['iv'];
$appid = $WeiXin_Xd_Conf['appid'];
$secret = $WeiXin_Xd_Conf['secret'];
$grant_type = $WeiXin_Xd_Conf['grant_type'];
//从微信获取session_key
$user_info_url = $WeiXin_Xd_Conf['code2session_url'];
$user_info_url = sprintf("%s?appid=%s&secret=%s&js_code=%s&grant_type=%",$user_info_url,$appid,$secret,$js_code,$grant_type);
$weixin_user_data = json_decode(get_url($user_info_url));
$session_key = $weixin_user_data->session_key;
//解密数据
$data = '';
$wxBizDataCrypt = new WXBizDataCrypt($appid, $session_key);
$errCode=$wxBizDataCrypt>decryptData($appid,$session_key,$encryptedData, $iv, $data );
最后拿到的这个 data就是我们解密后的encryptedData里面会包含unionId。
这样简单登录就实现了!以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# 微信小程序开发流程
# 微信小程序开发教程
# 详解小程序之简单登录注册表单验证
# 微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
# 微信小程序 教程之注册页面
# 微信小程序 教程之注册程序
# 微信小程序实战之登录页面制作(5)
# 微信小程序 登录的简单实现
# 微信小程序 新建登录页并实现tabBar隐藏
# 微信小程序搭建及解决登录失败问题
# 小程序云开发之用户注册登录
# 自己的
# 的是
# 所需要
# 文档
# 就在
# 的说
# 下载地址
# 给我们
# 花了
# 做过
# 写了
# 我将
# 用户登录
# 两部分
# 创建一个
# 转成
# 信中
# 大家多多
# 程序开发
# 一定要把
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
如何制作一个表白网站视频,关于勇敢表白的小标题?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
独立制作一个网站多少钱,建立网站需要花多少钱?
七夕网站制作视频,七夕大促活动怎么报名?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
Laravel如何使用Service Container和依赖注入?(代码示例)
Laravel如何发送系统通知?(Notification渠道示例)
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Bootstrap CSS布局之列表
利用vue写todolist单页应用
Laravel PHP版本要求一览_Laravel各版本环境要求对照
如何基于云服务器快速搭建网站及云盘系统?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
详解MySQL数据库的安装与密码配置
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何用AI帮你把自己的生活经历写成一个有趣的故事?
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
公司网站制作价格怎么算,公司办个官网需要多少钱?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Python制作简易注册登录系统
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何获取上海专业网站定制建站电话?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
PythonWeb开发入门教程_Flask快速构建Web应用
如何在万网自助建站中设置域名及备案?
网站图片在线制作软件,怎么在图片上做链接?
如何快速搭建高效WAP手机网站?
如何用AWS免费套餐快速搭建高效网站?
JS实现鼠标移上去显示图片或微信二维码
网站优化排名时,需要考虑哪些问题呢?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
JavaScript如何实现音频处理_Web Audio API如何工作?
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
香港服务器网站推广:SEO优化与外贸独立站搭建策略
如何快速生成ASP一键建站模板并优化安全性?
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何有效防御Web建站篡改攻击?

