H5
2025/9/7大约 3 分钟
H5
钉钉免登流程
前端: 获取免登授权码。 code 只能使用一次 并且 5 分钟内失效
后端: 获取 AccessToken。调用接口获取 access_token,详情请参考获取企业内部应用的 access_token(有效期 2h 有效期内重复获取会返回相同结果并自动续期, 每个应用的 accessToken 是彼此独立的)
后端: userid。调用接口获取用户的 userid,详情请参考通过免登码获取用户信息。能够拿到 userid, device_id(设备 id) associated_unionid(用户关联的 unionId) unionid(用户 unionId) name
后端: 获取用户详情。调用接口获取用户详细信息,根据某些特定字段匹配到 PC 端系统中用户 返回用户 token
常规登录设计
TOC 应用
- 获取 h5 端的授权码 code 进行登录, 接口拿到用户信息 id 等数据,创建用户 绑定 token 即可
- 如果涉及到多租户, 提供用户选择租户页面,选择租户后带着租户信息然后执行 1 步骤
TOB 应用
token 不涉及租户情况
- 小程序端 wx.login 返回 code 调用 pigx 获取 token。
- 若 pigx 返回 200 & access_token, 小程序端保存 access_token ,调用服务端 API 使用。
- 若 pigx 返回 401 则未绑定,跳转绑定功能。
ⅰ. 使用短信验证码模式登录获取 token
ⅱ. 小程序端再次 wx.login 获取 code
ⅲ. 调用绑定接口,实现用户&&openid 绑定
如果需要先选择租户在获取 token 呢或者 token 与租户关联
- 方案一 : 免 token 获取到所有的租户, 选择租户后再获取 H5 授权码登录
- 方案二 : 根据用户信息获取绑定的租户列表, 后端需要提供两个接口, A:用于返回租户列表 B:用于返回用户 token, 怎么设计 B 接口在无密码状态安全的拿到 token, 后端接口 A 中返回
用过即消
数据, 类似免登授权码, 使用过一次就失效
H5 的各种 id
微信
- openid 普通用户的标识,不管是 微信公众号 还是 微信小程序,二者都是在微信公众平台进行管理的,所以他俩就放一起讲,为了识别用户,每个微信用户针对每个 公众号 或者 小程序 会产生一个安全的 OpenID
- UnionID 用户统一标识,针对一个微信开放平台帐号下的应用,同一用户的 unionid 是唯一的
钉钉
- userid 每个钉钉用户都有一个唯一的 userid,用于在钉钉系统中唯一标识一个用户, 创建后不可修改。
- unionid:unionid 是一个跨应用的用户唯一标识符,用于将同一个用户在不同应用之间进行关联。 当一个用户在多个使用钉钉开放平台的应用中登录时,他们的 unionid 会保持一致。 这样可以方便开发者在多个应用之间实现用户信息的共享和关联。
- staffId:staffId 是企业内部员工的工号,用于在企业内部标识员工的唯一标识符。 它通常由企业自己的人力资源系统或员工管理系统提供,并与钉钉系统进行对接,以便在钉钉中进行员工身份认证和管理
钉钉 H5 会缓存 index.html,需要禁用缓存
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
插件
postcss 插件
- autoprefixer 一个自动补齐 css 浏览器前缀的插件
- tailwindcss