Skip to content

Auth — 认证授权

提供 SSO 登录、账号关联、生物识别和 Token 获取等能力。

API 参考

woo.requestSSOLogin(options?)

发起 SSO 单点登录。
ts
const result = await woo.requestSSOLogin()
console.log(result.token)  // SSO token
console.log(result.userId) // 用户 ID

woo.requestAuthorizationToken(options?)

获取 API 调用凭证(JWT)。
ts
const { token, expiresIn } = await woo.requestAuthorizationToken()
// 存入 Storage,定期刷新
await woo.setStorage({ key: 'auth:token', data: { token, expiresIn } })
字段类型说明
tokenstringJWT Token
expiresInnumber过期时间(秒)

woo.getUserProfile(options?)

获取当前登录用户信息。
ts
const profile = await woo.getUserProfile()
console.log(profile.id)
console.log(profile.name)
console.log(profile.avatar)

woo.authenticateWithBiometric(options?)

使用生物识别(Face ID / 指纹)进行本地身份验证。
ts
try {
  const result = await woo.authenticateWithBiometric()
  if (result.success) {
    unlockWallet()
  }
} catch (err) {
  if (err.code === BridgeErrorCode.BiometricCancelled) {
    // 用户取消
  }
}

woo.requestLinkedLogin(options?)

关联账号登录(第三方账号绑定场景)。
提交账号关联结果。

woo.unlinkAccount(options?)

解除账号关联。

推荐认证流程

ts
// 应用启动时检查登录态
async function bootstrap() {
  const { data: tokenData } = await woo.getStorage<{ token: string; expiresIn: number }>({
    key: 'auth:token',
  })

  if (!tokenData || Date.now() > tokenData.expiresIn * 1000) {
    // Token 过期或不存在,发起 SSO
    const result = await woo.requestSSOLogin()
    const { token, expiresIn } = await woo.requestAuthorizationToken()
    await woo.setStorage({
      key: 'auth:token',
      data: { token, expiresIn: Date.now() + expiresIn * 1000 },
    })
    return token
  }

  return tokenData.token
}

基于 OpenSumi IDE 构建