JS SDK 版本迁移指南
v3 到 v4 迁移
v4 的 PostgreSQL、云存储、云函数、实时推送等模块与 v3 PG 文档中的用法一致。身份认证改为默认的 GoTrue 客户端(app.auth()),主要变化:
- 登录标识是邮箱或手机号,密码登录不再接受
username signUp/signInWithOtp不再返回data.verifyOtp回调。注册或发码成功后,调用verifyOtp完成校验auth.detectSessionInUrl默认开启,回跳后自动恢复会话。不需要时设为false。默认流程是 implicit,会话写在回调 URL 的 hash 中。PKCE 设置auth.flowType: 'pkce'。自动检测开启时,不必调用exchangeCodeForSession- 修改密码使用
updateUser,不再提供resetPasswordForOld signInWithCustomTicket改为传入{ ticket }。v3 传入的是返回票据的函数createTicket用法与 v3 相同。私钥仍放在init顶层的credentials里,字段为private_key、private_key_id、env_id,仅 Node.js 端可用signInWithOpenId改为传入code与appId。wx.login由调用方执行。云开发免登录可以不传code。不再接受useWxCloudsignInWithPhoneAuth改为传入phoneCode与appId。不再从wx.getAccountInfoSync读取 AppID,也不再接受useWxCloud- 不再提供
toDefaultLoginPage、refreshUser、deleteUser,以及 Node.js 端的getUserInfo/getEndUserInfo/queryUserInfo/getClientIP - 新增
signInWithSSO、exchangeCodeForSession
接口说明见 身份认证。
已废弃、默认不挂载的模块
下面三个模块已废弃。安装 @cloudbase/js-sdk 时不会装上对应的包。要兼容旧调用,请单独安装,再引入注册函数,然后 init。app.database()、app.mysql()、app.rdb() 仍随主包提供。
| 模块 | 调用 | 安装 | 引入 |
|---|---|---|---|
| 文档型实时监听 | collection.watch() | @cloudbase/realtime | registerRealtime |
| 数据模型 | app.models | @cloudbase/model | registerModel |
| HTTP API | app.apis | @cloudbase/apis | registerApis |
npm install @cloudbase/realtime @cloudbase/model @cloudbase/apis -S
import cloudbase from "@cloudbase/js-sdk";
import { registerRealtime } from "@cloudbase/realtime";
import { registerModel } from "@cloudbase/model";
import { registerApis } from "@cloudbase/apis";
registerRealtime(cloudbase);
registerModel(cloudbase);
registerApis(cloudbase);
collection.watch() 来自 @cloudbase/realtime。app.realtime() 来自主包里的 registerRealtimeJs。初始化页见 已废弃、默认不挂载的模块。
v2 到 v3 迁移
v3 版本在代码使用上完全兼容 v2 版本,可以平滑迁移,但有以下变化需注意:
-
身份认证、云函数、云存储 请求域名变为:{env}.api.tcloudbasegateway.com,与 HTTP API 对齐
-
PG 云存储使用 PostgreSQL Bucket,使用方式请参考 云存储
-
v3 优化了 身份认证 模块,带来更加方便的 api 调用操作,推荐使用新的方法,用法请参考 身份认证
-
云函数、云存储 域名变化会涉及前置开放 API 权限校验,请到 云开发平台/身份认证/权限控制 中进行角色关联,详细说明请参考策略管理
v1 到 v2 迁移
登录认证
从 v1 到 v2,登录认证模块有以下变化:
- 登录状态持久化:登录状态只支持
local模式 - v2 版本不再支持监听用户登录状态改变
- v2 版本不再支持公众号登录方式,如需使用该方式,请用 v1 版本
- 用户字段信息精简化,详见 User
- 对账户关联使用方式进行了调整,并且不再支持关联自定义登录,详见“登录认证 v2 |账户关联”
- 对登录的使用方式进行了调整,详见“登录认证 v2 |登录认证”
接口调整
Auth
更新
- 接口命名 typo 修正:不再使用
Auth.getCurrenUser(),请使用Auth.getUser()
新增
- Auth.bindEmail
- Auth.bindPhoneNumber
- Auth.bindWithProvider
- Auth.deleteMe
- Auth.genProviderRedirectUri
- Auth.getAccessToken
- Auth.getProviders
- Auth.getUserInfo
- Auth.getVerification
- Auth.grantProviderToken
- Auth.loginScope
- Auth.queryUser
- Auth.resetPassword
- Auth.setCustomSignFunc
- Auth.setPassword
- Auth.signIn
- Auth.signInAnonymously
- Auth.signInWithCustomTicket
- Auth.signInWithOpenId
- Auth.signInWithPhoneAuth
- Auth.signInWithProvider
- Auth.signInWithSms
- Auth.signInWithEmail
- Auth.signInWithUnionId
- Auth.signUp
- Auth.sudo
- Auth.unbindProvider
- Auth.verify
废弃
- Auth.anonymousAuthProvider
- Auth.customAuthProvider
- Auth.forceResetPwdByPhoneCode
- Auth.getAuthHeader
- Auth.getAuthHeaderAsync
- Auth.onAccessTokenRefreshed
- Auth.onAnonymousConverted
- Auth.onLoginStateExpired
- Auth.onLoginTypeChanged
- Auth.sendPasswordResetEmail
- Auth.sendPhoneCode
- Auth.shouldRefreshAccessToken
- Auth.signInWithEmailAndPassword
- Auth.signInWithPhoneCodeOrPassword
- Auth.signInWithUsernameAndPassword
- Auth.signUpWithEmailAndPassword
- Auth.signUpWithPhoneCode
- Auth.weixinAuthProvider
LoginState
废弃
- LoginState.isAnonymousAuth
- LoginState.isCustomAuth
- LoginState.isUsernameAuth
- LoginState.isWeixinAuth
- LoginState.loginType
User
废弃
- User.avatarUrl
- User.linkWithPhoneNumber
- User.nickName
- User.updateEmail
- User.updatePassword
- User.updatePhoneNumber
- User.updateUsername