简体中文
简体中文
English
联系我们
注册
登录
语言
简体中文
简体中文
English
联系我们
登录
注册
返回主站
layout空间导航

使用手机账号注册和登录 iOS 用户账号

更新时间:2021-12-06 01:33:07下载pdf

智能生活 App SDK 提供了手机号码和密码的注册和登录能力。

查询验证码服务可用地区

为了加强用户信息的数据安全,涂鸦优化了验证码发送流程,并添加了账号限制。只有验证码服务可用的地区,才可以发送验证码。若您想继续使用该服务,请联系您的涂鸦客户经理或 提交工单 开通。

- (void)getWhiteListWhoCanSendMobileCodeSuccess:(TYSuccessString)success
                                        failure:(TYFailureError)failure;

参数说明

参数 说明
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

Objc:

[[TuyaSmartUser sharedInstance] getWhiteListWhoCanSendMobileCodeSuccess:^(NSString *regions) {

} failure:^(NSError *error) {

}];

Swift:

TuyaSmartUser.sharedInstance().getWhiteListWhoCanSendMobileCodeSuccess({ regions in

}, failure: { error in

})

发送手机号码验证码

您需要确保您能使用本接口。详情请调用 getWhiteListWhoCanSendMobileCodeSuccess 查看使用权限。

接口说明

发送验证码,用于手机号码的验证码登录、注册、密码重置等。

- (void)sendVerifyCodeWithUserName:(NSString *)userName
                            region:(NSString *)region
                       countryCode:(NSString *)countryCode
                              type:(NSInteger)type
                           success:(TYSuccessHandler)success
                           failure:(TYFailureError)failure;

参数说明

参数 说明
userName 手机号码
region 用户注册地区,可以通过 [TuyaSmartUser regionListWithCountryCode:success:failure:] 或者 [TuyaSmartUser getDefaultRegionWithCountryCode:] 获取
countryCode 国家码,例如 86
type 发送验证码类型。取值:
  • 1:使用手机号码注册账号时,发送验证码
  • 2:使用手机号码登录账号时,发送验证码
  • 3:重置手机号码注册的账号的密码时,发送验证码
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objc:

[[TuyaSmartUser sharedInstance] sendVerifyCodeWithUserName:@"yourUsename"  
                                                    region:region 
                                               countryCode:@"yourCountryCode" 
                                                      type:1 
                                                   success:^{
    NSLog(@"sendVerifyCode success");
} failure:^(NSError *error) {
    NSLog(@"sendVerifyCode failure: %@", error);
}];

Swift:

TuyaSmartUser.sharedInstance().sendVerifyCode(withUserName: "yourUsename", region: region, countryCode: "yourCountryCode", type: 1, success: {
    print("sendVerifyCode success")
}, failure: { error in
    if let error = error {
        print("sendVerifyCode failure: \(error)")
    }
})

校验填入的验证码

接口说明

手机号码账号注册、登录、重设密码时验证码的校验。

- (void)checkCodeWithUserName:(NSString *)userName
                       region:(NSString *_Nullable)region
                  countryCode:(NSString *)countryCode
                         code:(NSString *)code
                         type:(NSInteger)type
                      success:(TYSuccessBOOL)success
                      failure:(TYFailureError)failure;

参数说明

参数 说明
userName 手机号或邮箱
region 区域,默认填 nil
countryCode 国家码,例如 86
code 经过验证码发送接口,收到的验证码
type 发送验证码类型。取值:
  • 1:使用手机号码注册账号时,校验验证码
  • 2:使用手机号码登录账号时,校验验证码
  • 3:重置手机号码注册的账号的密码时,校验验证码
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objc:

[[TuyaSmartUser sharedInstance] checkCodeWithUserName:@"email_or_phone_number" region:@"region" countryCode:@"your_country_code" code:@"verify_code" type:1 success:^(BOOL result) {
		if (result) {
				NSLog(@"valid code!");
    } else {
				NSLog(@"invalid code!");
    }
} failure:^(NSError *error) {
		NSLog(@"check code failure: %@", error);
}];

Swift:

TuyaSmartUser.sharedInstance()?.checkCode(withUserName: "email_or_phone_number", region: "region", countryCode: "your_country_code", code: "verify_code", type: type, success: { (result) in
		if result {
				print("valid code!")
		} else {
				print("invalid code!")
		}
}, failure: { (error) in
		if let error = error {
				print("check code failure: \(error)")
		}
})

使用手机号码注册账号

使用手机号码注册账号前,您需要先 获取验证码

接口说明

- (void)registerByPhone:(NSString *)countryCode
            phoneNumber:(NSString *)phoneNumber
               password:(NSString *)password
                   code:(NSString *)code
                success:(nullable TYSuccessHandler)success
                failure:(nullable TYFailureError)failure;

参数说明

参数 说明
countryCode 国家码,例如 86
phoneNumber 手机号码
password 密码
code 经过验证码发送接口,收到的验证码
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objc:

[[TuyaSmartUser sharedInstance] registerByPhone:@"your_country_code" phoneNumber:@"your_phone_number" password:@"your_password" code:@"verify_code" success:^{
    NSLog(@"register success");
} failure:^(NSError *error) {
    NSLog(@"register failure: %@", error);
}];

Swift:

TuyaSmartUser.sharedInstance()?.register(byPhone: "your_country_code", phoneNumber: "your_phone_number", password: "your_password", code: "verify_code", success: {
    print("register success")
}, failure: { (error) in
    if let e = error {
        print("register failure: \(e)")
    }
})

使用手机号码和密码登录账号

接口说明

- (void)loginByPhone:(NSString *)countryCode
         phoneNumber:(NSString *)phoneNumber
            password:(NSString *)password
             success:(nullable TYSuccessHandler)success
             failure:(nullable TYFailureError)failure;

参数说明

参数 说明
countryCode 国家码,例如 86
phoneNumber 手机号码
password 密码
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objc:

[[TuyaSmartUser sharedInstance] loginByPhone:@"your_country_code" phoneNumber:@"your_phone_number" password:@"your_password" success:^{
		NSLog(@"login success");
} failure:^(NSError *error) {
		NSLog(@"login failure: %@", error);
}];

Swift:

TuyaSmartUser.sharedInstance()?.login(byPhone: "your_country_code", phoneNumber: "your_phone_number", password: "your_password", success: {
    print("login success")
}, failure: { (error) in
    if let e = error {
        print("login failure: \(e)")
    }
})

使用手机号码和验证码登录账号

您需要先调用 验证码发送接口,发送验证码,再将收到的验证码填入对应的参数中。

接口说明

- (void)loginWithMobile:(NSString *)mobile
            countryCode:(NSString *)countryCode
                   code:(NSString *)code
                success:(TYSuccessHandler)success
                failure:(TYFailureError)failure;

参数说明

参数 说明
mobile 手机号码
countryCode 国家码,例如 86
code 经过验证码发送接口,收到的验证码
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objc:

[[TuyaSmartUser sharedInstance] loginWithMobile:@"your_phone_number" countryCode:@"your_country_code" code:@"verify_code" success:^{
		NSLog(@"login success");
} failure:^(NSError *error) {
    NSLog(@"login failure: %@", error);
}];

Swift:

TuyaSmartUser.sharedInstance()?.login(withMobile: "your_phone_number", countryCode: "your_country_code", code: "verify_code", success: {
    print("login success")
}, failure: { (error) in
    if let e = error {
        print("login failure: \(e)")
    }
})

重置手机号码注册的账号密码

重置密码前,您需要先 获取验证码

接口说明

- (void)resetPasswordByPhone:(NSString *)countryCode
                 phoneNumber:(NSString *)phoneNumber
                 newPassword:(NSString *)newPassword
                        code:(NSString *)code
                     success:(nullable TYSuccessHandler)success
                     failure:(nullable TYFailureError)failure;

参数说明

参数 说明
countryCode 国家码,例如 86
phoneNumber 手机号码
newPassword 新密码
code 经过验证码发送接口,收到的验证码
success 接口发送成功回调
failure 接口发送失败回调,error 表示失败原因

示例代码

Objc:

- (void)resetPasswordByPhone {
	[TuyaSmartUser sharedInstance] resetPasswordByPhone:@"your_country_code" phoneNumber:@"your_phone_number" newPassword:@"your_password" code:@"verify_code" success:^{
		NSLog(@"resetPasswordByPhone success");
	} failure:^(NSError *error) {
		NSLog(@"resetPasswordByPhone failure: %@", error);
	}];
}

Swift:

func resetPasswordByPhone() {
    TuyaSmartUser.sharedInstance()?.resetPassword(byPhone: "your_country_code", phoneNumber: "your_phone_number", newPassword: "your_password", code: "verify_code", success: {
        print("resetPasswordByPhone success")
    }, failure: { (error) in
        if let e = error {
            print("resetPasswordByPhone failure: \(e)")
        }
    })
}

重置密码后,如果有多个 App 都同时登录了这个账号,那么其他设备上的 App 会触发 Session 失效的回调。您需要自行实现回调后的动作,如跳转到登录页面等。详情请参考 Session 过期的处理