创建 SBTAuth 钱包

本文档帮助您使用 SBTAuth 实现完整登录功能。

快速开始

  1. 安装 SBTAuth
Yarn
yarn add @sbtauth/sbtauth
NPM
npm install @sbtauth/sbtauth
  1. 初始化 SBTAuth
注意:如果 developMode 为 true,则连接至测试服务,测试服务邮箱登录无需验证码,同时测试服务仅可连接至测试网。请在正式发布时确保 developMode 为 false。

SBTAuth Wallet 目前支持网络包括 Ethereum Polygon BNB Smart Chain。

const sbtauth = new SbtAuth({  clientId: "Demo", //  developMode: true,  defaultChainId: "0x5",});
  1. 登录 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) {}
  1. 获取用户信息

你可以通过调用 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 时,说明用户本地私钥碎片丢失,可以通过其他设备或者邮箱备份碎片进行恢复。 通过已登录设备恢复

  1. 新设备获取用户已登录设备列表
const devices = await sbtauth.api.getUserDeviceList()
  1. 用户选择已登录设备后,发送授权请求
await sbtauth.api.sendAuthRequest(device) // Device 为用户选择设备
  1. 旧设备收到请求后同意授权,显示六位授权码
sbtauth.onAuthRequest((device: string, ip: stirng) => {// 打开授权页面})const verifyCode = await sbtauth.approveAuthRequest(deviceName)
  1. 新设备输入授权码恢复
await sbtauth.recoverWithDevice(verifyCode)

通过邮箱备份恢复, 需要用户输入邮箱备份私钥及安全密码。

const privateKey = '' // 需用户输入const password = '' // 需用户输入await sbtauth.recoverWidthBackup(privateKey, password)

API

SBTAuth 提供两类接口。

  • SBTAuth 相关接口,通过调用 sbtauth.api 访问。
  • Web3.0 相关接口,用于获取用户余额等,通过调用 sbtauth.web3Api 访问。