@wenext/feishu-auth
飞书登录 SDK,专为多系统、跨域场景设计,提供安全、易用的身份验证解决方案。
项目概述
@wenext/feishu-auth 是一个轻量级的飞书登录 SDK,旨在简化飞书扫码登录和H5授权流程。它通过提供两种登录模式(弹窗和重定向),解决了跨域身份验证的难题,并内置了强大的错误处理和插件机制,为开发者提供了灵活、可靠的集成体验。
主要功能
- 零配置跨域认证: 采用弹窗式授权流程和集中的回调处理,无需复杂的后端配置即可实现安全的跨域身份验证。
- 强大的错误处理: 提供了一套自定义的错误类,使错误处理更加可预测和规范。
- 可扩展的插件系统: 允许开发者通过插件在身份验证生命周期中添加自定义功能。
- 轻量化设计: 经过性能优化,打包体积小,对应用性能影响降到最低。
- TypeScript 支持: 提供完整的 TypeScript 类型定义,提升开发效率和代码质量。
技术栈
- TypeScript: 主要开发语言,提供强类型支持。
- Vite: 用于项目构建和开发的工具。
- Axios: 用于处理网络请求。
安装指南
您可以通过 npm、yarn 或 pnpm 进行安装:
bash
# 使用 npm
npm install @wenext/feishu-auth
# 使用 yarn
yarn add @wenext/feishu-auth
# 使用 pnpm
pnpm add @wenext/feishu-auth使用说明
初始化
首先,使用您的H5应用配置来初始化 FeishuAuth 类。使用单例模式。
typescript
import { FeishuAuth } from '@wenext/feishu-auth';
// 单例模式
const feishuAuth = FeishuAuth.getInstance({
application_id: 'YOUR_application_id', // 你的h5应用 Client ID
redirect_url: 'YOUR_APPLICATION_REDIRECT_URI', // 登录成功后的最终重定向地址
env: 'test', // 登录环境
});登录
此方法会打开一个公共登录页面,引导用户授权。它返回一个 Promise,成功后会解析出 accessToken 和 userInfo。
typescript
feishuAuth.login().then((authInfo) => {
// 成功获取 authInfo
console.log('Auth Info:', authInfo.access_token, authInfo.userInfo);
}).catch((err) => {
// 处理登录过程中可能出现的错误
console.error('Login failed:', error);
});登出
成功后会重定向至指定页面,若redirectUrl为空则跳转至公共登录页。
typescript
const feishuAuth = FeishuAuth.getInstance({});
const redirectUrl = 'https://xxx';
// 成功后会重定向至指定页面,若redirect_url为空则跳转至公共登录页
feishuAuth.logout(redirectUrl);获取access_token
成功后会重定向至指定页面,若redirectUrl为空则跳转至公共登录页。
typescript
import { FeishuAuth } from '@wenext/feishu-auth';
// 单例模式
const feishuAuth = FeishuAuth.getInstance({});
// 该实例方法会自动校验token的过期时间,若过期,则返回undefiend,否则返回token
feishuAuth.getAccessToken();获取用户信息
成功后会重定向至指定页面,若redirectUrl为空则跳转至公共登录页。
typescript
import { FeishuAuth } from '@wenext/feishu-auth';
// 单例模式
const feishuAuth = FeishuAuth.getInstance({});
feishuAuth.getUserInfo();配置方法
在初始化 FeishuAuth 时,您可以传入以下配置项:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
application_id | string | 是 | 您的H5应用 Client ID。 |
redirect_url | string | 是 | 登录成功后的最终重定向地址。 |
env | string | 否 | 环境,可选值为 test, production。 |