帐号管理

开发者可直接使用AbleCloud平台帐号服务管理用户,也可以将已有帐号系统或其它平台(如QQ、微博等)用户对接至AbleCloud平台。AbleCloud平台将开发者自有帐号系统或来自其它平台的用户统一视为来自第三方平台的用户。

用户注册

直接注册用户

可以使用电子邮箱或手机号直接注册用户。

// 实例化ACAccountMgr对象
ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 给用户发送注册验证码
// 参数account为字符串,是用户的电子邮箱或手机号,也是用户注册后的登录帐号。
// 参数template是拟采用的消息模板的编号。
// 参数timeout是验证码的有效时长。单位为秒。
accountMgr.sendVerifyCode(account, template, timeout);
// 注册帐号
// 参数name是用户的昵称;
// 参数email和phone分别指用户的电子邮件及手机号。这两个参数至少需指定一个,以作为用户的登录名。两者俱备时任意一个都可用作登录名;
// 参数password是登录密码;
// 参数verifyCode是验证码。
ACAccount user = accountMgr.register(name, email, phone, password, verifyCode);

注:向用户发送手机或邮箱验证码时,要求开发者在AbleCloud平台已经配置了对应的消息模板等参数。此外,对于向同一用户发送手机短信息有频次限制。

第三方平台用户注册

来自第三方平台的用户使用其OpenID及平台标识符注册帐号。如微信平台的标识符可为"weixin"。如果是开发者自有的帐号系统,则推荐使用开发者在AbleCloud平台上的主域名作为平台的标识符,用户的OpenID可以使用其在原系统中的ID等能唯一标识其身份的值。

// 实例化ACAccountMgr对象
ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 注册帐号
// 第一个参数指定第三方平台;
// 参数openId是用户在第三方平台的标识附;
// 参数unionId是可选参数。针对微信用户,该参数可以用来识别因关注不同公众号而具有不同OpenID的同一用户。
ACAccount user = accountMgr.registerWithOpenId(ACThirdPlatform.WEIXIN, openId, unionId);

用户登录

直接注册的用户使用帐号密码登录,第三方平台用户则使用OpenID登录。

帐号密码登录

// 实例化ACAccountMgr对象
ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 使用帐号密码登录
ACAccount user = accountMgr.login(account, password);

第三方平台用户登录

// 实例化ACAccountMgr对象
ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 使用OpenID登录
// 第一个参数指定第三方平台;
// 参数openId是用户在第三方平台的标识附。
ACAccount user = $accountMgr->loginWithOpenId(ACThirdPlatform.WEIXIN, openId);

绑定手机号

针对第三方平台用户,AbleCloud只能自动获取其OpenID信息,用户的其它信息需要开发者或用户额外提供。如为安全起见,可以验证并绑定用户的手机。

向用户的手机发送验证码

// 获取账号管理对象
ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 发送验证码
// 参数phone为字符串,是用户的手机号。
// 参数template是拟采用的短信模板的编号。
// 参数timeout是验证码的有效时长。单位为秒。
String verifyCode = accountMgr.sendVerifyCode(phone, template, timeout);

注:向用户发送手机验证码时,要求开发者在AbleCloud平台已经配置了手机短信息模板等参数,并且对于向同一用户发送手机短信息有频次限制。

根据验证码绑定用户的手机

ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 获取用户对象
// 修改用户手机号
// 来自第三方平台的用户在AbleCloud帐号服务中没有密码,参数password可以使用空字符串。
accountMgr.changePhone(userId, phone, verifyCode, password);

用户帐号的附加属性

设置用户帐号的附加属性

设置帐号的附加属性之前,应通过开发者管理控制台定义帐号的附加属性列。

// 实例化ACAccountMgr对象
ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 设置帐号的附加属性。附加属性以键值对组成的ACObject对象保存,记为profile。
accountMgr.setUserProfile(userId, profile);

获取用户帐号的附加属性

// 实例化ACAccountMgr对象
ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 获取用户的附加属性
ACObject profile  = accountMgr.getUserProfileById(userId);

获取用户的OpenID

已知用户在AbleCloud平台上的ID的条件下,可以获取用户来自第三方平台的OpenID。

// 实例化ACAccountMgr对象
ACAccountMgr accountMgr = ac.accountMgr(ac.newContext());
// 获取用户的OpenID。
// 第一个参数指定第三方平台;
// 参数userId是用户在AbleCloud平台上的ID;
String openId = accountMgr.getUserOpenId(ACThirdPlatform.WEIXIN, userId);