@cloudbase/auth 2.24.0 → 2.24.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SbaseApi.md +121 -30
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/sbaseApi.js +27 -25
- package/dist/esm/index.js +4 -2
- package/dist/esm/sbaseApi.js +27 -25
- package/dist/miniprogram/index.js +1 -1
- package/package.json +5 -5
- package/src/index.ts +1 -1
- package/src/sbaseApi.ts +4 -3
- package/src/type.d.ts +1 -0
package/SbaseApi.md
CHANGED
|
@@ -105,7 +105,7 @@ async function registerUser(email, password, nickname, verificationCode) {
|
|
|
105
105
|
console.log('验证码已发送,等待验证...')
|
|
106
106
|
|
|
107
107
|
// 第二步:验证验证码并完成注册
|
|
108
|
-
const { data: loginData, error: loginError } = await data.
|
|
108
|
+
const { data: loginData, error: loginError } = await data.verifyOtp({ token: verificationCode })
|
|
109
109
|
|
|
110
110
|
if (loginError) {
|
|
111
111
|
console.error('验证失败:', loginError.message)
|
|
@@ -310,7 +310,7 @@ class PhoneLoginPage {
|
|
|
310
310
|
this.hideError()
|
|
311
311
|
|
|
312
312
|
try {
|
|
313
|
-
const { data, error } = await this.verifyFunction(code)
|
|
313
|
+
const { data, error } = await this.verifyFunction({ token: code })
|
|
314
314
|
|
|
315
315
|
if (error) {
|
|
316
316
|
this.handleVerifyError(error)
|
|
@@ -332,7 +332,7 @@ class PhoneLoginPage {
|
|
|
332
332
|
|
|
333
333
|
// 处理发送验证码成功
|
|
334
334
|
handleSendCodeSuccess(data) {
|
|
335
|
-
this.verifyFunction = data.
|
|
335
|
+
this.verifyFunction = data.verifyOtp
|
|
336
336
|
|
|
337
337
|
// 显示验证码输入区域
|
|
338
338
|
document.getElementById('verificationSection').style.display = 'block'
|
|
@@ -485,7 +485,7 @@ class SecurePhoneLogin {
|
|
|
485
485
|
throw new Error('验证码格式错误,请输入6位数字')
|
|
486
486
|
}
|
|
487
487
|
|
|
488
|
-
const { data, error } = await verifyFunction(code)
|
|
488
|
+
const { data, error } = await verifyFunction({ token: code })
|
|
489
489
|
|
|
490
490
|
if (error) {
|
|
491
491
|
throw error
|
|
@@ -699,7 +699,7 @@ Promise<SignUpRes>
|
|
|
699
699
|
|
|
700
700
|
| 字段名 | 类型 | 描述 |
|
|
701
701
|
|-------|------|------|
|
|
702
|
-
| data.
|
|
702
|
+
| data.verifyOtp | function | 验证码回调函数,参数为 `{ token: string, messageId?: string }` |
|
|
703
703
|
| error | AuthError \| null | 错误信息,成功时为null |
|
|
704
704
|
|
|
705
705
|
**返回值定义**
|
|
@@ -707,7 +707,7 @@ Promise<SignUpRes>
|
|
|
707
707
|
```typescript
|
|
708
708
|
interface SignUpRes {
|
|
709
709
|
data: {
|
|
710
|
-
|
|
710
|
+
verifyOtp: (params: { token: string, messageId?: string }) => Promise<SignInRes>
|
|
711
711
|
}
|
|
712
712
|
error: AuthError | null
|
|
713
713
|
}
|
|
@@ -735,7 +735,7 @@ if (error) {
|
|
|
735
735
|
const verificationCode = '123456' // 用户输入的验证码
|
|
736
736
|
|
|
737
737
|
// 第三步:智能验证流程(自动判断用户存在性)
|
|
738
|
-
const { data: loginData, error: loginError } = await data.
|
|
738
|
+
const { data: loginData, error: loginError } = await data.verifyOtp({ token: verificationCode })
|
|
739
739
|
|
|
740
740
|
if (loginError) {
|
|
741
741
|
console.error('验证失败:', loginError.message)
|
|
@@ -767,7 +767,7 @@ if (error) {
|
|
|
767
767
|
const verificationCode = '123456' // 用户输入的验证码
|
|
768
768
|
|
|
769
769
|
// 第三步:智能验证流程(自动判断用户存在性)
|
|
770
|
-
const { data: loginData, error: loginError } = await data.
|
|
770
|
+
const { data: loginData, error: loginError } = await data.verifyOtp({ token: verificationCode })
|
|
771
771
|
|
|
772
772
|
if (loginError) {
|
|
773
773
|
console.error('操作失败:', loginError.message)
|
|
@@ -801,7 +801,7 @@ async function startRegistration(email, password, nickname) {
|
|
|
801
801
|
return false
|
|
802
802
|
} else {
|
|
803
803
|
console.log('验证码已发送')
|
|
804
|
-
signUpVerify = data.
|
|
804
|
+
signUpVerify = data.verifyOtp
|
|
805
805
|
|
|
806
806
|
// 显示验证码输入框
|
|
807
807
|
document.getElementById('verificationSection').style.display = 'block'
|
|
@@ -820,7 +820,7 @@ async function completeRegistration(verificationCode) {
|
|
|
820
820
|
return false
|
|
821
821
|
}
|
|
822
822
|
|
|
823
|
-
const { data, error } = await signUpVerify(verificationCode)
|
|
823
|
+
const { data, error } = await signUpVerify({ token: verificationCode })
|
|
824
824
|
|
|
825
825
|
if (error) {
|
|
826
826
|
console.error('验证失败:', error.message)
|
|
@@ -1274,7 +1274,7 @@ Promise<SignInWithOtpRes>
|
|
|
1274
1274
|
|
|
1275
1275
|
| 字段名 | 类型 | 描述 |
|
|
1276
1276
|
|-------|------|------|
|
|
1277
|
-
| data.
|
|
1277
|
+
| data.verifyOtp | function | 验证码回调函数,参数为 `{ token: string, messageId?: string }` |
|
|
1278
1278
|
| error | AuthError \| null | 错误信息,成功时为null |
|
|
1279
1279
|
|
|
1280
1280
|
**返回值定义**
|
|
@@ -1282,7 +1282,7 @@ Promise<SignInWithOtpRes>
|
|
|
1282
1282
|
```typescript
|
|
1283
1283
|
interface SignInWithOtpRes {
|
|
1284
1284
|
data: {
|
|
1285
|
-
|
|
1285
|
+
verifyOtp: (params: { token: string, messageId?: string }) => Promise<SignInRes>
|
|
1286
1286
|
}
|
|
1287
1287
|
error: AuthError | null
|
|
1288
1288
|
}
|
|
@@ -1312,7 +1312,7 @@ if (error) {
|
|
|
1312
1312
|
console.log('验证码已发送,等待用户输入...')
|
|
1313
1313
|
|
|
1314
1314
|
// 用户输入验证码后验证
|
|
1315
|
-
const { data: loginData, error: loginError } = await data.
|
|
1315
|
+
const { data: loginData, error: loginError } = await data.verifyOtp({ token: '123456' })
|
|
1316
1316
|
|
|
1317
1317
|
if (loginError) {
|
|
1318
1318
|
console.error('验证失败:', loginError.message)
|
|
@@ -1337,7 +1337,7 @@ if (error) {
|
|
|
1337
1337
|
console.log('邮箱验证码已发送,请查收邮件...')
|
|
1338
1338
|
|
|
1339
1339
|
// 用户从邮箱获取验证码后验证
|
|
1340
|
-
const { data: loginData, error: loginError } = await data.
|
|
1340
|
+
const { data: loginData, error: loginError } = await data.verifyOtp({ token: '654321' })
|
|
1341
1341
|
|
|
1342
1342
|
if (loginError) {
|
|
1343
1343
|
console.error('验证失败:', loginError.message)
|
|
@@ -1388,7 +1388,7 @@ try {
|
|
|
1388
1388
|
}
|
|
1389
1389
|
|
|
1390
1390
|
// 验证验证码
|
|
1391
|
-
const { data: loginData, error: loginError } = await data.
|
|
1391
|
+
const { data: loginData, error: loginError } = await data.verifyOtp({ token: '123456' })
|
|
1392
1392
|
|
|
1393
1393
|
if (loginError) {
|
|
1394
1394
|
console.error('验证失败:', loginError.message)
|
|
@@ -2923,11 +2923,12 @@ if (refreshedData) {
|
|
|
2923
2923
|
更新当前登录用户的信息。
|
|
2924
2924
|
|
|
2925
2925
|
- 不支持更新密码,更新密码请使用 [resetPasswordForEmail](#resetpasswordforemail) 或 [reauthenticate](#reauthenticate)
|
|
2926
|
+
- **更新邮箱或手机号时**,需要先发送验证码,然后通过返回的 `verifyOtp` 回调进行验证
|
|
2926
2927
|
|
|
2927
2928
|
**方法签名**
|
|
2928
2929
|
|
|
2929
2930
|
```typescript
|
|
2930
|
-
async updateUser(params: UpdateUserReq): Promise<GetUserRes>
|
|
2931
|
+
async updateUser(params: UpdateUserReq): Promise<GetUserRes | UpdateUserWithVerificationRes>
|
|
2931
2932
|
```
|
|
2932
2933
|
|
|
2933
2934
|
**描述**
|
|
@@ -2935,14 +2936,15 @@ async updateUser(params: UpdateUserReq): Promise<GetUserRes>
|
|
|
2935
2936
|
- 更新当前登录用户的基本信息和元数据
|
|
2936
2937
|
- 支持更新邮箱、手机号、用户名、昵称、头像等
|
|
2937
2938
|
- 需要用户已登录状态才能更新信息
|
|
2938
|
-
-
|
|
2939
|
+
- **更新邮箱或手机号时**:返回 `verifyOtp` 回调函数,需要用户输入验证码后调用该回调完成验证
|
|
2940
|
+
- **更新其他字段时**:直接返回更新后的用户信息
|
|
2939
2941
|
|
|
2940
2942
|
**参数**
|
|
2941
2943
|
|
|
2942
2944
|
| 参数名 | 类型 | 必选 | 描述 |
|
|
2943
2945
|
|-------|------|------|------|
|
|
2944
|
-
| email | string | 可选 |
|
|
2945
|
-
| phone | string | 可选 |
|
|
2946
|
+
| email | string | 可选 | 邮箱地址(需要验证码验证) |
|
|
2947
|
+
| phone | string | 可选 | 手机号码(需要验证码验证) |
|
|
2946
2948
|
| username | string | 可选 | 用户名称,长度 5-24 位,支持中英文、数字、特殊字符(仅支持_-),不支持中文 |
|
|
2947
2949
|
| description | string | 可选 | 用户描述信息 |
|
|
2948
2950
|
| avatar_url | string | 可选 | 头像URL地址 |
|
|
@@ -2952,11 +2954,22 @@ async updateUser(params: UpdateUserReq): Promise<GetUserRes>
|
|
|
2952
2954
|
**返回类型**
|
|
2953
2955
|
|
|
2954
2956
|
```typescript
|
|
2955
|
-
Promise<GetUserRes>
|
|
2957
|
+
Promise<GetUserRes | UpdateUserWithVerificationRes>
|
|
2956
2958
|
```
|
|
2957
2959
|
|
|
2958
2960
|
**返回值**
|
|
2959
2961
|
|
|
2962
|
+
当更新邮箱或手机号时:
|
|
2963
|
+
|
|
2964
|
+
| 字段名 | 类型 | 描述 |
|
|
2965
|
+
|-------|------|------|
|
|
2966
|
+
| data.user | User | 当前用户信息(验证前) |
|
|
2967
|
+
| data.messageId | string | 验证码消息ID |
|
|
2968
|
+
| data.verifyOtp | function | 验证码回调函数,参数为 `{ email?: string, phone?: string, token: string }` |
|
|
2969
|
+
| error | AuthError \| null | 错误信息,成功时为null |
|
|
2970
|
+
|
|
2971
|
+
当更新其他字段时:
|
|
2972
|
+
|
|
2960
2973
|
| 字段名 | 类型 | 描述 |
|
|
2961
2974
|
|-------|------|------|
|
|
2962
2975
|
| data.user | User | 更新后的用户详细信息 |
|
|
@@ -2965,6 +2978,7 @@ Promise<GetUserRes>
|
|
|
2965
2978
|
**返回值定义**
|
|
2966
2979
|
|
|
2967
2980
|
```typescript
|
|
2981
|
+
// 更新其他字段时的返回值
|
|
2968
2982
|
interface GetUserRes {
|
|
2969
2983
|
data: {
|
|
2970
2984
|
user?: User
|
|
@@ -2972,6 +2986,16 @@ interface GetUserRes {
|
|
|
2972
2986
|
error: AuthError | null
|
|
2973
2987
|
}
|
|
2974
2988
|
|
|
2989
|
+
// 更新邮箱或手机号时的返回值
|
|
2990
|
+
interface UpdateUserWithVerificationRes {
|
|
2991
|
+
data: {
|
|
2992
|
+
user?: User
|
|
2993
|
+
messageId?: string
|
|
2994
|
+
verifyOtp?: (params: { email?: string, phone?: string, token: string }) => Promise<GetUserRes>
|
|
2995
|
+
}
|
|
2996
|
+
error: AuthError | null
|
|
2997
|
+
}
|
|
2998
|
+
|
|
2975
2999
|
interface User {
|
|
2976
3000
|
id: any
|
|
2977
3001
|
aud: string
|
|
@@ -3012,25 +3036,82 @@ interface AuthError extends Error {
|
|
|
3012
3036
|
|
|
3013
3037
|
**示例**
|
|
3014
3038
|
|
|
3015
|
-
**示例 1
|
|
3039
|
+
**示例 1:更新基本用户信息(无需验证码)**
|
|
3016
3040
|
|
|
3017
3041
|
```typescript
|
|
3018
3042
|
const { data, error } = await auth.updateUser({
|
|
3019
|
-
email: 'newemail@example.com',
|
|
3020
3043
|
nickname: '新昵称',
|
|
3021
3044
|
gender: 'MALE',
|
|
3045
|
+
avatar_url: 'https://example.com/avatar.jpg',
|
|
3022
3046
|
})
|
|
3023
3047
|
|
|
3024
3048
|
if (error) {
|
|
3025
3049
|
console.error('更新用户信息失败:', error.message)
|
|
3026
3050
|
} else {
|
|
3027
3051
|
console.log('用户信息已更新:', data.user)
|
|
3028
|
-
console.log('新邮箱:', data.user?.email)
|
|
3029
3052
|
console.log('新昵称:', data.user?.user_metadata?.nickName)
|
|
3030
3053
|
}
|
|
3031
3054
|
```
|
|
3032
3055
|
|
|
3033
|
-
**示例 2
|
|
3056
|
+
**示例 2:更新邮箱(需要验证码验证)**
|
|
3057
|
+
|
|
3058
|
+
```typescript
|
|
3059
|
+
// 第一步:发起邮箱更新,系统会发送验证码到新邮箱
|
|
3060
|
+
const { data, error } = await auth.updateUser({
|
|
3061
|
+
email: 'newemail@example.com',
|
|
3062
|
+
})
|
|
3063
|
+
|
|
3064
|
+
if (error) {
|
|
3065
|
+
console.error('发送验证码失败:', error.message)
|
|
3066
|
+
} else {
|
|
3067
|
+
console.log('验证码已发送到新邮箱,等待用户输入...')
|
|
3068
|
+
|
|
3069
|
+
// 第二步:用户输入验证码后,调用 verifyOtp 回调完成验证
|
|
3070
|
+
const verificationCode = '123456' // 用户输入的验证码
|
|
3071
|
+
|
|
3072
|
+
const { data: verifyData, error: verifyError } = await data.verifyOtp({
|
|
3073
|
+
email: 'newemail@example.com',
|
|
3074
|
+
token: verificationCode,
|
|
3075
|
+
})
|
|
3076
|
+
|
|
3077
|
+
if (verifyError) {
|
|
3078
|
+
console.error('验证失败:', verifyError.message)
|
|
3079
|
+
} else {
|
|
3080
|
+
console.log('邮箱更新成功:', verifyData.user?.email)
|
|
3081
|
+
}
|
|
3082
|
+
}
|
|
3083
|
+
```
|
|
3084
|
+
|
|
3085
|
+
**示例 3:更新手机号(需要验证码验证)**
|
|
3086
|
+
|
|
3087
|
+
```typescript
|
|
3088
|
+
// 第一步:发起手机号更新,系统会发送验证码到新手机号
|
|
3089
|
+
const { data, error } = await auth.updateUser({
|
|
3090
|
+
phone: '13800138001',
|
|
3091
|
+
})
|
|
3092
|
+
|
|
3093
|
+
if (error) {
|
|
3094
|
+
console.error('发送验证码失败:', error.message)
|
|
3095
|
+
} else {
|
|
3096
|
+
console.log('验证码已发送到新手机号,等待用户输入...')
|
|
3097
|
+
|
|
3098
|
+
// 第二步:用户输入验证码后,调用 verifyOtp 回调完成验证
|
|
3099
|
+
const verificationCode = '123456' // 用户输入的验证码
|
|
3100
|
+
|
|
3101
|
+
const { data: verifyData, error: verifyError } = await data.verifyOtp({
|
|
3102
|
+
phone: '13800138001',
|
|
3103
|
+
token: verificationCode,
|
|
3104
|
+
})
|
|
3105
|
+
|
|
3106
|
+
if (verifyError) {
|
|
3107
|
+
console.error('验证失败:', verifyError.message)
|
|
3108
|
+
} else {
|
|
3109
|
+
console.log('手机号更新成功:', verifyData.user?.phone)
|
|
3110
|
+
}
|
|
3111
|
+
}
|
|
3112
|
+
```
|
|
3113
|
+
|
|
3114
|
+
**示例 4:更新头像和描述**
|
|
3034
3115
|
|
|
3035
3116
|
```typescript
|
|
3036
3117
|
const { data, error } = await auth.updateUser({
|
|
@@ -3051,7 +3132,7 @@ if (error) {
|
|
|
3051
3132
|
}
|
|
3052
3133
|
```
|
|
3053
3134
|
|
|
3054
|
-
**示例
|
|
3135
|
+
**示例 5:用户资料编辑页面**
|
|
3055
3136
|
|
|
3056
3137
|
```typescript
|
|
3057
3138
|
async function saveUserProfile(formData) {
|
|
@@ -3088,7 +3169,7 @@ document.getElementById('profileForm').addEventListener('submit', async (e) => {
|
|
|
3088
3169
|
})
|
|
3089
3170
|
```
|
|
3090
3171
|
|
|
3091
|
-
**示例
|
|
3172
|
+
**示例 6:错误处理**
|
|
3092
3173
|
|
|
3093
3174
|
```typescript
|
|
3094
3175
|
try {
|
|
@@ -4897,7 +4978,7 @@ interface AuthError extends Error {
|
|
|
4897
4978
|
const { data, error } = await auth.signInWithOtp({ phone: '13800138000' })
|
|
4898
4979
|
|
|
4899
4980
|
// 验证码校验回调
|
|
4900
|
-
let signUpVerify = data.
|
|
4981
|
+
let signUpVerify = data.verifyOtp
|
|
4901
4982
|
|
|
4902
4983
|
// 重新发送验证码,获取新的messageId
|
|
4903
4984
|
const { data: resendData, error: resendError } = await auth.resend({
|
|
@@ -4916,7 +4997,7 @@ if (resendError) {
|
|
|
4916
4997
|
const messageId = resendData.messageId // 新的messageId
|
|
4917
4998
|
|
|
4918
4999
|
// 使用新的messageId进行验证
|
|
4919
|
-
const { data: loginData, error: loginError } = await signUpVerify(verificationCode, messageId)
|
|
5000
|
+
const { data: loginData, error: loginError } = await signUpVerify({ token: verificationCode, messageId })
|
|
4920
5001
|
|
|
4921
5002
|
if (loginError) {
|
|
4922
5003
|
console.error('验证失败:', loginError.message)
|
|
@@ -5749,7 +5830,7 @@ interface ResendRes {
|
|
|
5749
5830
|
// OTP登录响应参数
|
|
5750
5831
|
interface SignInWithOtpRes {
|
|
5751
5832
|
data: {
|
|
5752
|
-
|
|
5833
|
+
verifyOtp?: (params: { token: string, messageId?: string }) => Promise<SignInRes> // 验证码回调函数
|
|
5753
5834
|
}
|
|
5754
5835
|
error: AuthError | null // 错误信息,成功时为null
|
|
5755
5836
|
}
|
|
@@ -5757,7 +5838,17 @@ interface SignInWithOtpRes {
|
|
|
5757
5838
|
// 用户注册响应参数
|
|
5758
5839
|
interface SignUpRes {
|
|
5759
5840
|
data: {
|
|
5760
|
-
|
|
5841
|
+
verifyOtp?: (params: { token: string, messageId?: string }) => Promise<SignInRes> // 验证码回调函数
|
|
5842
|
+
}
|
|
5843
|
+
error: AuthError | null
|
|
5844
|
+
}
|
|
5845
|
+
|
|
5846
|
+
// 用户信息更新响应参数(当更新邮箱或手机号时)
|
|
5847
|
+
interface UpdateUserWithVerificationRes {
|
|
5848
|
+
data: {
|
|
5849
|
+
user?: User // 当前用户信息
|
|
5850
|
+
messageId?: string // 验证码消息ID
|
|
5851
|
+
verifyOtp?: (params: { email?: string, phone?: string, token: string }) => Promise<GetUserRes> // 验证码回调函数
|
|
5761
5852
|
}
|
|
5762
5853
|
error: AuthError | null
|
|
5763
5854
|
}
|