创建 SBTAuth 钱包
本文档帮助您使用 SBTAuth 实现完整登录功能。
快速开始
- 安装 SBTAuth
Yarn
yarn add @sbtauth/sbtauth
- 初始化 SBTAuth
注意:如果 developMode 为 true,则连接至测试服务,测试服务邮箱登录无需验证码,同时测试服务仅可连接至测试网。请在正式发布时确保 developMode 为 false。
SBTAuth Wallet 目前支持网络包括 Ethereum Polygon BNB Smart Chain。
const sbtauth = new SbtAuth({ clientId: "Demo", // developMode: true, defaultChainId: "0x5",});
- 登录 SBTAuth
SBTAuth 目前支持邮箱登录、Google Account、Facebook、Twitter。
/* SBTAuth Login ** @params loginType 'email' | 'google' | 'twitter' | 'facebook' ** @params loaginParams {email: string, code?: string, password?: string} */await sbtauth.login(loginType, { email, code: "121212" });
邮箱登录支持验证码和密码两种登录方式,新用户可以通过验证码直接登录。使用验证码登录时可通过 sendVerifyCode 获取验证码。
try { await sbtauth.sendVerifyCode("example@email.com");} catch (error) { if (error instanceof Error) console.log(error);}
登录完成后通过调用 sbtauth.status 得知 sbtath 是否初始化成功。
const status = sbtauth.status;if (!status) { // 登录失败,需要重新登录} else if (status === "logined") { // 登录成功,但是初始化失败,需要用户恢复本地私钥碎片} else if (status === "inited") { // 初始化成功}
在用户已登录时,可以通过调用 sbtauth.init() 初始化 sbtauth 。
try { await sbtauth.init();} catch (error) {}
- 获取用户信息
你可以通过调用 sbtauth.user
获取登录用户信息。
export type User = { userID?: string; // 用户ID username?: string; // 用户名 userLoginType?: string; // 登录类型 'email' | 'google' | 'twitter' | 'facebook' userClientID?: string; // ClentID publicKeyAddress?: string; // 用户钱包地址 backupPrivateKey?: string; // 备份私钥 avatar?: string; // 用户头像};
如果用户信息 backupPrivateKey 不为空,说明是新注册用户,推荐此时提醒用户通过邮箱备份。备份私钥时需用户输入安全密码,安全密码用于对私钥进行加密,保证备份私钥安全。
const user = sbtauth.userconst password = 'password' // 需用户设置if (user.backupPrivateKey) { try { await sbtauth.sendBackupPrivateKey(password) } catch(error) { if(error instanceOf Error) console.log(error) }}
恢复本地私钥
用户登录完成后,如果 sbtauth.status 为 logined 时,说明用户本地私钥碎片丢失,可以通过其他设备或者邮箱备份碎片进行恢复。 通过已登录设备恢复
- 新设备获取用户已登录设备列表
const devices = await sbtauth.api.getUserDeviceList()
- 用户选择已登录设备后,发送授权请求
await sbtauth.api.sendAuthRequest(device) // Device 为用户选择设备
- 旧设备收到请求后同意授权,显示六位授权码
sbtauth.onAuthRequest((device: string, ip: stirng) => {// 打开授权页面})const verifyCode = await sbtauth.approveAuthRequest(deviceName)
- 新设备输入授权码恢复
await sbtauth.recoverWithDevice(verifyCode)
通过邮箱备份恢复, 需要用户输入邮箱备份私钥及安全密码。
const privateKey = '' // 需用户输入const password = '' // 需用户输入await sbtauth.recoverWidthBackup(privateKey, password)
API
SBTAuth 提供两类接口。
- SBTAuth 相关接口,通过调用
sbtauth.api
访问。 - Web3.0 相关接口,用于获取用户余额等,通过调用
sbtauth.web3Api
访问。