3.2. 用户部分 机智云的用户系统包含了用户的注册、登录、重置密码、修改个人信息等功能,机智云以APPID区分用户系统,不同APPID的用户系统相互独立。更换APPID后,需要重新注册用户。 以下流程中涉及到的**注册方法是用子类继承基类的方式实现的。 3.2.1. 用户部分主要流程图用户的注册方式有多种,比如手机号、普通用户名、邮箱等,APP可以根据需要采取不同的方式。其他流程比如登录、密码修改、个人信息修改等部分,请直接阅读下面的流程文档。 3.2.2. 用户注册机智云提供三种用户注册方式:手机注册、普通用户注册、邮箱注册。 3.2.2.1. 注册手机用户通过手机注册账号,需要一个有效的手机号。注册时需要两步操作:获取短信验证码、用短信验证码注册用户。 第一步:APP获取短信验证码时,SDK向云端发送短信验证码请求,如果请求成功,云端会给手机发送短信验证码。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().requestSendPhoneSMSCode ("your_app_secret", "your_phone_number");
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didRequestSendPhoneSMSCode(GizWifiErrorCode result, String token) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 请求成功
- } else {
- // 请求失败
- }
- }
- }
复制代码第二步:用短信验证码注册时,APP把手机收到的短信验证码传给SDK,填上手机号和密码就可以注册了。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().registerUser("your_phone_number", "your_password", "your_verify_code", GizUserAccountType.GizUserPhone);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didRegisterUser(GizWifiErrorCode result, String uid, String token) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 注册成功
- } else {
- // 注册失败
- }
- }
- }
复制代码 3.2.2.2. 注册普通用户注册普通用户,使用用户名、密码即可创建一个账号。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().registerUser("your_user_name", "your_password", null, GizUserAccountType.GizUserNormal);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didRegisterUser(GizWifiErrorCode result, String uid, String token) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 注册成功
- } else {
- // 注册失败
- }
- }
- }
复制代码 3.2.2.3. 注册邮箱用户通过有效的电子邮箱地址,注册一个账号。注册成功后,云端会给指定邮箱发送注册成功的邮件。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().registerUser("your_email_address", "your_password", null, GizUserAccountType.GizUserEmail);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didRegisterUser(GizWifiErrorCode result, String uid, String token) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 注册成功
- } else {
- // 注册失败
- }
- }
- }
复制代码 3.2.3. 用户登录机智云提供三种用户登录方式:实名登录、匿名登录、第三方账号登录。实名登录适用于设计了登录界面,必须使用用户名密码注册登录以后才能使用的APP。匿名登录适用于没有设计登录界面,由后台自动生成用户账号的APP。登录后获取到的token有效期为7天。 3.2.3.1. 实名登录实名用户登录时,用户名可以是注册过的手机号、邮箱、普通用户名。登录账号要先注册好,如果更换了AppID,登录账号需要重新注册。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().userLogin("your_user_name", "your_password");
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didUserLogin(GizWifiErrorCode result, String uid, String token) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 登录成功
- } else {
- // 登录失败
- }
- }
- }
复制代码 3.2.3.2. 匿名登录用户每次匿名登录时,获取到的uid是相同的。Android SDK使用Android ID生成登录账号。每个Android系统都有一个独立的Android ID,系统刷机后将改变。因此,系统刷机后匿名登录的用户信息将无法保留。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().userLoginAnonymous();
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didUserLogin(GizWifiErrorCode result, String uid, String token) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 登录成功
- } else {
- // 登录失败
- }
- }
- }
复制代码 3.2.3.3. 第三方账号登录目前支持的第三方账号有百度、新浪、腾讯。用户可以使用这三者的API获取到uid和token登录机智云,使用第三方账号登录时无需在机智云上注册,可直接登录。 开发者可通过新浪、百度或腾讯api获取uid和token, 具体方法请参考各第三方平台的开发者文档。 【示例代码】 - // 以新浪账号为例
- GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().loginWithThirdAccount(GizThirdAccountType.GizThirdSINA, "your_third_uid", "your_third_token");
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didUserLogin(GizWifiErrorCode result, String uid, String token) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 登录成功
- } else {
- // 登录失败
- }
- }
- }
复制代码 3.2.4. 重置密码如果忘记了用户密码,可以通过手机验证码或邮箱设置新的密码。SDK支持手机号重置密码和邮箱重置密码两种,手机号重置需要接收验证码,邮箱重置需要进⼊邮箱,根据链接提示进行重置。 3.2.4.1. 手机号重置密码手机号重置密码时,需要先获取短信验证码再重置。获取短信验证码方式与手机注册时相同。 第一步:获取短信验证码 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().requestSendPhoneSMSCode("your_app_secret", "your_phone_number");
-
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didRequestSendPhoneSMSCode(GizWifiErrorCode result, String token) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 请求成功
- } else {
- // 请求失败
- }
- }
- }
复制代码第二步:用短信验证码重置密码 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().resetPassword("your_phone_number", "your_verify_code", "your_new_password", GizUserAccountType.GizUserPhone);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didChangeUserPassword(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
- }
复制代码 3.2.4.2. 邮箱重置密码邮箱重置密码时,云端会给指定邮箱发送安全链接。用户需要到邮箱中查收邮件,并按邮件指示执行重置操作。重置密码邮件有可能进入用户的邮箱的垃圾箱中,需提醒用户。 邮件发送成功回调与密码修改成功回调一致,因此需要注意在回调的时候区分。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().resetPassword("your_email_address", null, "your_new_password", GizUserAccountType.GizUserEmail);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didChangeUserPassword(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- //重置密码邮件发送成功,提示用户查收
- } else {
- //重置密码邮件发送失败,弹出错误信息
- }
- }
- }
复制代码 3.2.5. 修改密码用户登录后可以修改密码。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().changeUserPassword("your_token", "your_old_password", "your_new_password");
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didChangeUserPassword(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
- }
复制代码 3.2.6. 匿名用户转换匿名注册的用户可以转换为普通用户或者手机用户,转换后匿名用户的信息会转移到实名用户下,原匿名账号失效。但普通用户和手机用户必须是还未注册过的,已注册的用户名是无法转换的。 3.2.6.1. 匿名用户转普通用户转普通用户时,填入待转换的用户名、密码,以及登录的token就可以了。 【示例代码】 - // 匿名转手机用户
- GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().transAnonymousUser("your_token", "your_user_name", "your_password", null, GizUserAccountType.GizUserNormal);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didTransAnonymousUser(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 转换成功
- } else {
- // 转换失败
- }
- }
- }
复制代码 3.2.6.2. 匿名用户转手机用户转手机用户时,需要填入待转换的手机号、密码、短信验证码,登录的token。获取短信验证码的过程与手机注册时一样。 【示例代码】 - // 匿名转手机用户
- GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().transAnonymousUser("your_token", "your_phone_number", "your_password", "your_verify_code", GizUserAccountType. GizUserPhone);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didTransAnonymousUser(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 转换成功
- } else {
- // 转换失败
- }
- }
- }
复制代码 3.2.7. 修改用户信息实名用户不支持修改普通用户名,可以修改邮箱、手机号,可以补充个人信息。实名用户必须登录后才能修改这些信息,并且待修改的邮箱或手机号必须是已经注册过的。 实名用户修改邮箱或手机号成功后,可以使用修改后的邮箱或手机号登录。登录后获得的绑定设备列表与原实名用户一致。 修改邮箱或手机号时,可以同时补充个人信息。不想修改个人信息时,对应参数可以传null。同时修改个人信息时,如果邮箱或用户名修改成功而个人信息修改失败,回调会返回成功并在errorMessage中提示个人信息修改失败的原因。 3.2.7.1. 修改用户邮箱只修改用户邮箱时,个人信息的参数传null,用户类型可以指定为邮箱用户。以下为修改用户邮箱的示例代码。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().changeUserInfo("your_token", "your_email_address", null, GizUserAccountType.GizUserEmail, null);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didChangeUserInfo(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
- }
复制代码 3.2.7.2. 修改用户手机号只修改用户手机号时,个人信息参数传null,用户类型可以指定为手机用户。修改手机号之前,需要先获取手机验证码。以下示例代码为修改用户手机号的代码,获取短信验证码的代码请参考手机号注册。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
- GizWifiSDK.sharedInstance().changeUserInfo("your_token", "your_phone_number", "your_verify_code", GizUserAccountType.GizUserPhone, null);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didChangeUserInfo(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
- }
复制代码 3.2.7.3. 修改用户个人信息只修改用户个人信息时,手机号或邮箱参数传null,用户类型可以指定为普通用户。个人信息包含多项内容,通过GizUserInfo类指定。其中不想修改的信息填null,云端会保留上次修改过的值。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
-
- GizUserInfo additionalInfo = new GizUserInfo();
- additionalInfo.setName("nickname");
- additionalInfo.setGender(GizUserGenderType.Male);
- additionalInfo.setBirthday("1990-1-1");
- additionalInfo.setAddress("Beijing");
- additionalInfo.setRemark("home");
-
- GizWifiSDK.sharedInstance().changeUserInfo("your_token", null, null, GizUserAccountType.GizUserNormal, additionalInfo);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didChangeUserInfo(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
- }
复制代码 3.2.7.4. 同时修改邮箱和个人信息修改邮箱同时修改个人信息时,用户类型需指定为邮箱用户。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
-
- GizUserInfo additionalInfo = new GizUserInfo();
- additionalInfo.setName("nickname");
- additionalInfo.setGender(GizUserGenderType.Male);
- additionalInfo.setBirthday("1990-1-1");
- additionalInfo.setAddress("Beijing");
- additionalInfo.setRemark("home");
-
- GizWifiSDK.sharedInstance().changeUserInfo("your_token", "your_email_address", null, GizUserAccountType.GizUserEmail, additionalInfo);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didChangeUserInfo(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
- }
复制代码 3.2.7.5. 同时修改手机号和个人信息修改手机号同时修改个人信息时,用户类型需指定为手机用户。修改手机号同样需要先获取手机验证码,获取短信验证码的代码请参考手机号注册。 【示例代码】 - GizWifiSDK.sharedInstance().setListener(mListener);
-
- GizUserInfo additionalInfo = new GizUserInfo();
- additionalInfo.setName("nickname");
- additionalInfo.setGender(GizUserGenderType.Male);
- additionalInfo.setBirthday("1990-1-1");
- additionalInfo.setAddress("Beijing");
- additionalInfo.setRemark("home");
-
- GizWifiSDK.sharedInstance().changeUserInfo("your_token", "your_phone_number", "your_verify_code", GizUserAccountType.GizUserPhone, additionalInfo);
-
- // 实现回调
- GizWifiSDKListener mListener = new GizWifiSDKListener() {
- @Override
- public void didChangeUserInfo(GizWifiErrorCode result) {
- if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
- }
复制代码
|