账户关联
每个云开发用户账号,除了最初注册时使用的登录方式外,还可以关联其它登录方式。关联后,无论用户使用哪种登录方式,均可以登录到同一个云开发账户。
例如:
- 使用自定义登录的用户,可以关联微信登录,关联后便可以使用这两种方法的任意一种登录;
- 使用邮箱登录的用户,可以关联用户名密码登录,关联后便可以使用这两种方法的任意一种登录;
- 使用匿名登录的用户,可以关联自定义登录与微信登录,关联后账号会被转为正式用户,可以使用任一种方法登录云开发。
关联微信登录
关联微信登录的步骤如下:
用户以任意一种登录方式(除微信登录)登录云开发
获取 Provider:
const auth = app.auth();
const provider = auth.weixinAuthProvider({
appid: "....",
scope: "snsapi_base"
});
- 重定向到提供方的页面进行登录:
auth.currentUser.linkWithRedirect(provider);
- 用户在微信的页面登录之后,会被重定向回您的页面。然后,可以在页面加载时通过调用
Provider.getLinkRedirectResult()
来获取关联结果:
const provider = auth.weixinAuthProvider();
provider.getLinkRedirectResult().then((result) => {
// 关联成功
});
关联自定义登录
关联自定义登录的步骤如下:
- 用户以任意一种登录方式(除自定义登录)登录云开发;
- 使用
User.linkWithTicket
,获取自定义登录 Ticket 后,关联自定义用户:
const auth = app.auth();
const ticket = "......"; // 自定义登录 Ticket
auth.currentUser.linkWithTicket(ticket).then((result) => {
// 关联成功
});
关联邮箱密码登录
关联邮箱密码登录的步骤如下:
- 用户以任意一种登录方式登录云开发
- 更新用户的密码:
const auth = app.auth();
auth.currentUser.updatePassword(password).then(() => {
// 设置密码成功
});
- 更新用户的邮箱,用户点击验证邮件之后,便关联成功:
auth.currentUser.updateEmail(email).then(() => {
// 发送验证邮件成功
});
关联用户名密码登录
关联邮箱密码登录的步骤如下:
- 用户以任意一种登录方式(除匿名登录)登录云开发:
// 以邮箱登录为例
await app.auth().signInWithEmailAndPassword(email, password);
- 绑定登录的用户名:
await app.auth().currentUser.updateUsername(username); // 绑定用户名
- 绑定成功后,便可以使用用户名密码登录:
const loginState = await app.auth().signInWithUsernameAndPassword(username, password); // 用户名密码登录