Commit c7f22b37e4b4490dae5de627f01e17db7c924b64
1 parent
dd146a67
增加三方登录可选手机号,强制绑定手机号,校验验证码等接口
Showing
26 changed files
with
1228 additions
and
59 deletions
CNLiveUserSystemDemo.xcodeproj/project.pbxproj
| ... | ... | @@ -83,6 +83,10 @@ |
| 83 | 83 | B6B54BEA1D8D009800089C9C /* UserInfoHeaderImageTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BE91D8D009800089C9C /* UserInfoHeaderImageTableViewCell.m */; }; |
| 84 | 84 | B6B54BED1D8D011000089C9C /* UserInfoTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BEC1D8D011000089C9C /* UserInfoTableViewCell.m */; }; |
| 85 | 85 | B6B54BF01D8D025A00089C9C /* ModifyUserInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B54BEF1D8D025A00089C9C /* ModifyUserInfoViewController.m */; }; |
| 86 | + D273A1DC1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = D273A1DB1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m */; }; | |
| 87 | + D273A1DF1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m in Sources */ = {isa = PBXBuildFile; fileRef = D273A1DE1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m */; }; | |
| 88 | + D2D25B171ED94BCE00B4B18B /* EmailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2D25B161ED94BCE00B4B18B /* EmailViewController.m */; }; | |
| 89 | + D2D25B1A1ED96DFD00B4B18B /* ModifyPwdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2D25B191ED96DFD00B4B18B /* ModifyPwdViewController.m */; }; | |
| 86 | 90 | /* End PBXBuildFile section */ |
| 87 | 91 | |
| 88 | 92 | /* Begin PBXContainerItemProxy section */ |
| ... | ... | @@ -251,6 +255,14 @@ |
| 251 | 255 | B6B54BEC1D8D011000089C9C /* UserInfoTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserInfoTableViewCell.m; sourceTree = "<group>"; }; |
| 252 | 256 | B6B54BEE1D8D025A00089C9C /* ModifyUserInfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModifyUserInfoViewController.h; sourceTree = "<group>"; }; |
| 253 | 257 | B6B54BEF1D8D025A00089C9C /* ModifyUserInfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModifyUserInfoViewController.m; sourceTree = "<group>"; }; |
| 258 | + D273A1DA1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveEmailModifyPassword.h; sourceTree = "<group>"; }; | |
| 259 | + D273A1DB1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveEmailModifyPassword.m; sourceTree = "<group>"; }; | |
| 260 | + D273A1DD1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveCheckVerificationCode.h; sourceTree = "<group>"; }; | |
| 261 | + D273A1DE1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveCheckVerificationCode.m; sourceTree = "<group>"; }; | |
| 262 | + D2D25B151ED94BCE00B4B18B /* EmailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmailViewController.h; sourceTree = "<group>"; }; | |
| 263 | + D2D25B161ED94BCE00B4B18B /* EmailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EmailViewController.m; sourceTree = "<group>"; }; | |
| 264 | + D2D25B181ED96DFD00B4B18B /* ModifyPwdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModifyPwdViewController.h; sourceTree = "<group>"; }; | |
| 265 | + D2D25B191ED96DFD00B4B18B /* ModifyPwdViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModifyPwdViewController.m; sourceTree = "<group>"; }; | |
| 254 | 266 | /* End PBXFileReference section */ |
| 255 | 267 | |
| 256 | 268 | /* Begin PBXFrameworksBuildPhase section */ |
| ... | ... | @@ -424,6 +436,10 @@ |
| 424 | 436 | B6B54BE61D8CFEC200089C9C /* UserInfoViewController.m */, |
| 425 | 437 | B6B54BEE1D8D025A00089C9C /* ModifyUserInfoViewController.h */, |
| 426 | 438 | B6B54BEF1D8D025A00089C9C /* ModifyUserInfoViewController.m */, |
| 439 | + D2D25B151ED94BCE00B4B18B /* EmailViewController.h */, | |
| 440 | + D2D25B161ED94BCE00B4B18B /* EmailViewController.m */, | |
| 441 | + D2D25B181ED96DFD00B4B18B /* ModifyPwdViewController.h */, | |
| 442 | + D2D25B191ED96DFD00B4B18B /* ModifyPwdViewController.m */, | |
| 427 | 443 | ); |
| 428 | 444 | path = Conreollers; |
| 429 | 445 | sourceTree = "<group>"; |
| ... | ... | @@ -523,6 +539,10 @@ |
| 523 | 539 | 811601001D92929A003CAE7D /* NSDictionary+Safety.m */, |
| 524 | 540 | 812642FB1D86AFE600B402CA /* CNLiveUserSystemTypeDef.h */, |
| 525 | 541 | 818735211DA8FD2700046D84 /* Common.h */, |
| 542 | + D273A1DA1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.h */, | |
| 543 | + D273A1DB1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m */, | |
| 544 | + D273A1DD1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.h */, | |
| 545 | + D273A1DE1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m */, | |
| 526 | 546 | ); |
| 527 | 547 | path = CNLiveUserSystemSDK; |
| 528 | 548 | sourceTree = "<group>"; |
| ... | ... | @@ -739,6 +759,7 @@ |
| 739 | 759 | 8116F8E41D8916250084FE49 /* IdAndPwdView.m in Sources */, |
| 740 | 760 | 8116F8EA1D89165A0084FE49 /* LoginViewController.m in Sources */, |
| 741 | 761 | 812540FA1D87DDBE00F32D66 /* CNLiveFeedback.m in Sources */, |
| 762 | + D273A1DF1ED7F81E00AE3F35 /* CNLiveCheckVerificationCode.m in Sources */, | |
| 742 | 763 | 811600F81D927E7E003CAE7D /* UIImage+GIF.m in Sources */, |
| 743 | 764 | 811600F61D927E7E003CAE7D /* SDWebImagePrefetcher.m in Sources */, |
| 744 | 765 | 812642FA1D86A83100B402CA /* CNLiveUserSystemCenter.m in Sources */, |
| ... | ... | @@ -750,6 +771,8 @@ |
| 750 | 771 | 811600F21D927E7E003CAE7D /* SDWebImageDecoder.m in Sources */, |
| 751 | 772 | 811600F51D927E7E003CAE7D /* SDWebImageManager.m in Sources */, |
| 752 | 773 | 8187A8FB1D8E68CD007FAFB6 /* CNLiveLogout.m in Sources */, |
| 774 | + D273A1DC1ED7CC9D00AE3F35 /* CNLiveEmailModifyPassword.m in Sources */, | |
| 775 | + D2D25B1A1ED96DFD00B4B18B /* ModifyPwdViewController.m in Sources */, | |
| 753 | 776 | 81D0773E1D911D50000A5E00 /* CNLiveURLRequestSerialization.m in Sources */, |
| 754 | 777 | 8116F8EB1D89165A0084FE49 /* ViewController.m in Sources */, |
| 755 | 778 | 8187A90E1D8E9A7B007FAFB6 /* SVProgressHUD.m in Sources */, |
| ... | ... | @@ -770,6 +793,7 @@ |
| 770 | 793 | 811601011D92929A003CAE7D /* NSDictionary+Safety.m in Sources */, |
| 771 | 794 | 811600FA1D927E7E003CAE7D /* UIImage+WebP.m in Sources */, |
| 772 | 795 | 812540FD1D87DFFB00F32D66 /* CNLiveUserInfo.m in Sources */, |
| 796 | + D2D25B171ED94BCE00B4B18B /* EmailViewController.m in Sources */, | |
| 773 | 797 | B6B54BF01D8D025A00089C9C /* ModifyUserInfoViewController.m in Sources */, |
| 774 | 798 | 81D077411D912079000A5E00 /* CNLiveUploadIcon.m in Sources */, |
| 775 | 799 | 8187A90F1D8E9A7B007FAFB6 /* SVRadialGradientLayer.m in Sources */, |
| ... | ... | @@ -939,7 +963,7 @@ |
| 939 | 963 | ); |
| 940 | 964 | GCC_PREFIX_HEADER = "$(SRCROOT)/CNLiveUserSystemDemo/PrefixHeader.pch"; |
| 941 | 965 | INFOPLIST_FILE = CNLiveUserSystemDemo/Info.plist; |
| 942 | - IPHONEOS_DEPLOYMENT_TARGET = 10.0; | |
| 966 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | |
| 943 | 967 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; |
| 944 | 968 | LIBRARY_SEARCH_PATHS = ( |
| 945 | 969 | "$(inherited)", |
| ... | ... | @@ -972,7 +996,7 @@ |
| 972 | 996 | ); |
| 973 | 997 | GCC_PREFIX_HEADER = "$(SRCROOT)/CNLiveUserSystemDemo/PrefixHeader.pch"; |
| 974 | 998 | INFOPLIST_FILE = CNLiveUserSystemDemo/Info.plist; |
| 975 | - IPHONEOS_DEPLOYMENT_TARGET = 10.0; | |
| 999 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | |
| 976 | 1000 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; |
| 977 | 1001 | LIBRARY_SEARCH_PATHS = ( |
| 978 | 1002 | "$(inherited)", | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveCheckVerificationCode.h
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveCheckVerificationCode.h | |
| 3 | +// CNLiveUserSystemDemo | |
| 4 | +// | |
| 5 | +// Created by 张旭 on 2017/5/26. | |
| 6 | +// Copyright © 2017年 zhulin. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <Foundation/Foundation.h> | |
| 10 | +#import "CNLiveUserSystemTypeDef.h" | |
| 11 | + | |
| 12 | +@interface CNLiveCheckVerificationCode : NSObject | |
| 13 | + | |
| 14 | +/** | |
| 15 | + 注册前校验手机验证码 | |
| 16 | + */ | |
| 17 | +- (void)registerCheckVerificationCodeWithAppId:(NSString *)appId appKey:(NSString *)appKey type:(CheckVerificationCodeType)type mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + 快捷登录前校验手机验证码 | |
| 21 | + */ | |
| 22 | +- (void)shortcutLoginCheckVerificationCodeWithAppId:(NSString *)appId appKey:(NSString *)appKey type:(CheckVerificationCodeType)type mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 23 | +@end | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveCheckVerificationCode.m
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveCheckVerificationCode.m | |
| 3 | +// CNLiveUserSystemDemo | |
| 4 | +// | |
| 5 | +// Created by 张旭 on 2017/5/26. | |
| 6 | +// Copyright © 2017年 zhulin. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "CNLiveCheckVerificationCode.h" | |
| 10 | +#import "CNLiveUserSystemTools.h" | |
| 11 | +#import "CNLiveUserNetworkManager.h" | |
| 12 | +#import "NSDictionary+Safety.h" | |
| 13 | + | |
| 14 | +//注册前校验手机验证码 | |
| 15 | +static NSString *registerCheckVerificationCodeURL = @"https://api.cnlive.com/open/api2/user/checkVerifyCodeForUnRegistered"; | |
| 16 | + | |
| 17 | +//快捷登录前前校验手机验证码 | |
| 18 | +static NSString *shortcutLoginCheckVerificationCodeURL = @"https://api.cnlive.com/open/api2/user/checkVerifyCode"; | |
| 19 | + | |
| 20 | +@implementation CNLiveCheckVerificationCode | |
| 21 | + | |
| 22 | +- (void)registerCheckVerificationCodeWithAppId:(NSString *)appId appKey:(NSString *)appKey type:(CheckVerificationCodeType)type mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 23 | +{ | |
| 24 | + NSDictionary *params = @{@"appId":[CNLiveUserSystemTools verify:appId], | |
| 25 | + @"mobile":[CNLiveUserSystemTools verify:mobile], | |
| 26 | + @"verificationCode":[CNLiveUserSystemTools verify:verificationCode], | |
| 27 | + @"clientPlat":@"i", | |
| 28 | + @"platform_id":[NSBundle mainBundle].bundleIdentifier | |
| 29 | + }; | |
| 30 | + | |
| 31 | + NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithDictionary:params]; | |
| 32 | + NSString *string = [NSString stringWithFormat:@"%@&key=%@", [CNLiveUserSystemTools signvalue:parameter], [CNLiveUserSystemTools verify:appKey]]; | |
| 33 | + NSString *signString = [[CNLiveUserSystemTools sha1:string] uppercaseString]; | |
| 34 | + | |
| 35 | + [parameter setObject:signString forKey:@"sign"]; | |
| 36 | + [self requestWithURL:[self getURL:type] parameter:parameter success:success failure:failure]; | |
| 37 | +} | |
| 38 | + | |
| 39 | +- (void)shortcutLoginCheckVerificationCodeWithAppId:(NSString *)appId appKey:(NSString *)appKey type:(CheckVerificationCodeType)type mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 40 | +{ | |
| 41 | + NSDictionary *params = @{@"appId":[CNLiveUserSystemTools verify:appId], | |
| 42 | + @"mobile":[CNLiveUserSystemTools verify:mobile], | |
| 43 | + @"verificationCode":[CNLiveUserSystemTools verify:verificationCode], | |
| 44 | + @"clientPlat":@"i", | |
| 45 | + @"platform_id":[NSBundle mainBundle].bundleIdentifier | |
| 46 | + }; | |
| 47 | + | |
| 48 | + NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithDictionary:params]; | |
| 49 | + NSString *string = [NSString stringWithFormat:@"%@&key=%@", [CNLiveUserSystemTools signvalue:parameter], [CNLiveUserSystemTools verify:appKey]]; | |
| 50 | + NSString *signString = [[CNLiveUserSystemTools sha1:string] uppercaseString]; | |
| 51 | + | |
| 52 | + [parameter setObject:signString forKey:@"sign"]; | |
| 53 | + [self requestWithURL:[self getURL:type] parameter:parameter success:success failure:failure]; | |
| 54 | +} | |
| 55 | + | |
| 56 | +#pragma mark - request | |
| 57 | +- (void)requestWithURL:(NSString *)URL parameter:(NSDictionary *)param success:(void(^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 58 | +{ | |
| 59 | + | |
| 60 | + [[CNLiveUserNetworkManager manager] requestPostURL:URL parameters:param success:^(NSURLResponse * _Nullable response, id _Nullable responseObject) { | |
| 61 | + | |
| 62 | + responseObject = [responseObject validatedDictionary]; | |
| 63 | + | |
| 64 | + if ([[responseObject allKeys] containsObject:@"errorCode"] && [responseObject[@"errorCode"] isEqualToString:@"0"]) { | |
| 65 | + | |
| 66 | + if (success) { | |
| 67 | + success(responseObject); | |
| 68 | + } | |
| 69 | + | |
| 70 | + } else { | |
| 71 | + | |
| 72 | + if (failure) { | |
| 73 | + failure(responseObject); | |
| 74 | + } | |
| 75 | + | |
| 76 | + [CNLiveUserSystemTools errorStat:responseObject[@"errorMessage"]]; | |
| 77 | + } | |
| 78 | + | |
| 79 | + } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) { | |
| 80 | + | |
| 81 | + NSDictionary *errorDic = @{@"errorCode": [NSString stringWithFormat:@"%ld", error.code], @"errorMessage": error.localizedDescription}; | |
| 82 | + | |
| 83 | + if (failure) { | |
| 84 | + failure(errorDic); | |
| 85 | + } | |
| 86 | + | |
| 87 | + [CNLiveUserSystemTools errorStat:error.localizedDescription]; | |
| 88 | + | |
| 89 | + }]; | |
| 90 | +} | |
| 91 | + | |
| 92 | +- (NSString *)getURL:(CheckVerificationCodeType)type | |
| 93 | +{ | |
| 94 | + NSString *url; | |
| 95 | + switch (type) { | |
| 96 | + case CheckVerificationCodeTypeShortcutLogin: | |
| 97 | + url = shortcutLoginCheckVerificationCodeURL; | |
| 98 | + break; | |
| 99 | + case CheckVerificationCodeTypeRegister: | |
| 100 | + url = registerCheckVerificationCodeURL; | |
| 101 | + break; | |
| 102 | + | |
| 103 | + default: | |
| 104 | + break; | |
| 105 | + } | |
| 106 | + return url; | |
| 107 | +} | |
| 108 | + | |
| 109 | +@end | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveEmailModifyPassword.h
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveEmailModifyPassword.h | |
| 3 | +// CNLiveUserSystemDemo | |
| 4 | +// | |
| 5 | +// Created by 张旭 on 2017/5/26. | |
| 6 | +// Copyright © 2017年 zhulin. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <Foundation/Foundation.h> | |
| 10 | + | |
| 11 | +@interface CNLiveEmailModifyPassword : NSObject | |
| 12 | + | |
| 13 | +- (void)modifyPwdWithAppId:(NSString *)appId appKey:(NSString *)appKey email:(NSString *)email newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 14 | + | |
| 15 | +@end | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveEmailModifyPassword.m
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveEmailModifyPassword.m | |
| 3 | +// CNLiveUserSystemDemo | |
| 4 | +// | |
| 5 | +// Created by 张旭 on 2017/5/26. | |
| 6 | +// Copyright © 2017年 zhulin. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "CNLiveEmailModifyPassword.h" | |
| 10 | +#import "CNLiveUserNetworkManager.h" | |
| 11 | +#import "CNLiveUserSystemTools.h" | |
| 12 | +#import "NSDictionary+Safety.h" | |
| 13 | + | |
| 14 | +//通过邮箱修改密码 | |
| 15 | +static NSString *emailModifyPwdURL = @"https://api.cnlive.com/open/api2/user/updatePwdByEmail"; | |
| 16 | + | |
| 17 | + | |
| 18 | +@implementation CNLiveEmailModifyPassword | |
| 19 | + | |
| 20 | +- (void)modifyPwdWithAppId:(NSString *)appId appKey:(NSString *)appKey email:(NSString *)email newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 21 | +{ | |
| 22 | + NSDictionary *params = @{@"appId":[CNLiveUserSystemTools verify:appId], | |
| 23 | + @"email":[CNLiveUserSystemTools verify:email], | |
| 24 | + @"newPwd":[CNLiveUserSystemTools verify:newPwd], | |
| 25 | + @"clientPlat":@"i", | |
| 26 | + @"platform_id":[NSBundle mainBundle].bundleIdentifier | |
| 27 | + }; | |
| 28 | + | |
| 29 | + NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithDictionary:params]; | |
| 30 | + NSString *string = [NSString stringWithFormat:@"%@&key=%@", [CNLiveUserSystemTools signvalue:parameter], [CNLiveUserSystemTools verify:appKey]]; | |
| 31 | + NSString *signString = [[CNLiveUserSystemTools sha1:string] uppercaseString]; | |
| 32 | + | |
| 33 | + [parameter setObject:signString forKey:@"sign"]; | |
| 34 | + [self requestWithURL:emailModifyPwdURL parameter:parameter success:success failure:failure]; | |
| 35 | +} | |
| 36 | + | |
| 37 | +#pragma mark - request | |
| 38 | +- (void)requestWithURL:(NSString *)URL parameter:(NSDictionary *)param success:(void(^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 39 | +{ | |
| 40 | + | |
| 41 | + [[CNLiveUserNetworkManager manager] requestPostURL:URL parameters:param success:^(NSURLResponse * _Nullable response, id _Nullable responseObject) { | |
| 42 | + | |
| 43 | + | |
| 44 | + responseObject = [responseObject validatedDictionary]; | |
| 45 | + | |
| 46 | + if ([[responseObject allKeys] containsObject:@"errorCode"] && [responseObject[@"errorCode"] isEqualToString:@"0"]) { | |
| 47 | + | |
| 48 | + if (success) { | |
| 49 | + success(responseObject); | |
| 50 | + } | |
| 51 | + | |
| 52 | + } else { | |
| 53 | + | |
| 54 | + if (failure) { | |
| 55 | + failure(responseObject); | |
| 56 | + } | |
| 57 | + | |
| 58 | + [CNLiveUserSystemTools errorStat:responseObject[@"errorMessage"]]; | |
| 59 | + } | |
| 60 | + | |
| 61 | + } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) { | |
| 62 | + | |
| 63 | + NSDictionary *errorDic = @{@"errorCode": [NSString stringWithFormat:@"%ld", error.code], @"errorMessage": error.localizedDescription}; | |
| 64 | + | |
| 65 | + if (failure) { | |
| 66 | + failure(errorDic); | |
| 67 | + } | |
| 68 | + | |
| 69 | + [CNLiveUserSystemTools errorStat:error.localizedDescription]; | |
| 70 | + | |
| 71 | + }]; | |
| 72 | +} | |
| 73 | + | |
| 74 | +@end | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveLogin.h
| ... | ... | @@ -25,4 +25,13 @@ |
| 25 | 25 | */ |
| 26 | 26 | - (void)loginWithAppId:(NSString *)appId appKey:(NSString *)appKey userName:(NSString *)userName password:(NSString *)password frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; |
| 27 | 27 | |
| 28 | +/** | |
| 29 | + * 验证第三方账号是否注册,若注册直接登录返回用户信息,若未注册返回errorCode | |
| 30 | + */ | |
| 31 | +- (void)thirdPartyCheckLoginWithAppId:(NSString *)appId appKey:(NSString *)appKey thirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 32 | + | |
| 33 | +/** | |
| 34 | + * 第三方注册强制绑定手机号: 手机号+密码+验证码+三方账号 | |
| 35 | + */ | |
| 36 | +- (void)thirdPartyBindMobileLoginWithAppId:(NSString *)appId appKey:(NSString *)appKey thirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode pawd:(NSString *)pawd frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 28 | 37 | @end | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveLogin.m
| ... | ... | @@ -20,6 +20,13 @@ static NSString *loginURL = @"https://api.cnlive.com/open/api2/user/loginIn"; |
| 20 | 20 | //第三方登录 |
| 21 | 21 | static NSString *thirdLoginURL = @"https://api.cnlive.com/open/api2/user/loginIn3rd"; |
| 22 | 22 | |
| 23 | +//验证第三方账号是否注册,若注册则登录返回用户信息,若未注册则errorCode | |
| 24 | +static NSString *thirdCheckLoginURL = @"https://api.cnlive.com/open/api2/user/loginIn3rdHasMobile4server"; | |
| 25 | + | |
| 26 | +//第三方注册强制绑定手机号: 手机号+密码+验证码+三方账号 | |
| 27 | +static NSString *thirdBindMobileLoginURL = @"https://api.cnlive.com/open/api2/user/loginIn3rdAndBindMobile4server"; | |
| 28 | + | |
| 29 | + | |
| 23 | 30 | @implementation CNLiveLogin |
| 24 | 31 | |
| 25 | 32 | - (void)thirdPartyLoginWithAppId:(NSString *)appId appKey:(NSString *)appKey thirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *))failure |
| ... | ... | @@ -103,6 +110,55 @@ static NSString *thirdLoginURL = @"https://api.cnlive.com/open/api2/user/loginI |
| 103 | 110 | [self requestWithURL:loginURL parameter:parameter success:success failure:failure]; |
| 104 | 111 | } |
| 105 | 112 | |
| 113 | +/** | |
| 114 | + * 验证第三方账号是否注册,若注册直接登录返回用户信息,若未注册返回errorCode | |
| 115 | + */ | |
| 116 | +- (void)thirdPartyCheckLoginWithAppId:(NSString *)appId appKey:(NSString *)appKey thirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 117 | +{ | |
| 118 | + NSDictionary *params = @{@"appId":[CNLiveUserSystemTools verify:appId], | |
| 119 | + @"thirdPartyPlat":[CNLiveUserSystemTools verify:plat], | |
| 120 | + @"thirdPartyId":[CNLiveUserSystemTools verify:thirdPartyId], | |
| 121 | + @"uuid":[CNLiveUserSystemTools uidForStat:[NSDate date]], | |
| 122 | + @"frmId":[CNLiveUserSystemTools verify:frmId], | |
| 123 | + @"clientPlat":@"i" | |
| 124 | + }; | |
| 125 | + | |
| 126 | + NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithDictionary:params]; | |
| 127 | + NSString *string = [NSString stringWithFormat:@"%@&key=%@", [CNLiveUserSystemTools signvalue:parameter], [CNLiveUserSystemTools verify:appKey]]; | |
| 128 | + NSString *signString = [[CNLiveUserSystemTools sha1:string] uppercaseString]; | |
| 129 | + | |
| 130 | + [parameter setObject:signString forKey:@"sign"]; | |
| 131 | + [self requestWithURL:thirdCheckLoginURL parameter:parameter success:success failure:failure]; | |
| 132 | +} | |
| 133 | + | |
| 134 | +/** | |
| 135 | + * 第三方注册强制绑定手机号: 手机号+密码+验证码+三方账号 | |
| 136 | + */ | |
| 137 | +- (void)thirdPartyBindMobileLoginWithAppId:(NSString *)appId appKey:(NSString *)appKey thirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode pawd:(NSString *)pawd frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 138 | +{ | |
| 139 | + NSDictionary *params = @{@"appId":[CNLiveUserSystemTools verify:appId], | |
| 140 | + @"thirdPartyPlat":[CNLiveUserSystemTools verify:plat], | |
| 141 | + @"thirdPartyId":[CNLiveUserSystemTools verify:thirdPartyId], | |
| 142 | + @"nickName":[CNLiveUserSystemTools verify:nickName], | |
| 143 | + @"gender":[CNLiveUserSystemTools verify:gender], | |
| 144 | + @"location":[CNLiveUserSystemTools verify:location], | |
| 145 | + @"faceUrl":[CNLiveUserSystemTools verify:faceUrl], | |
| 146 | + @"uuid":[CNLiveUserSystemTools uidForStat:[NSDate date]], | |
| 147 | +// @"frmId":[CNLiveUserSystemTools verify:frmId], | |
| 148 | + @"mobile":[CNLiveUserSystemTools verify:mobile], | |
| 149 | + @"verificationCode":[CNLiveUserSystemTools verify:verificationCode], | |
| 150 | + @"pawd":[CNLiveUserSystemTools verify:pawd], | |
| 151 | + @"clientPlat":@"i" | |
| 152 | + }; | |
| 153 | + | |
| 154 | + NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithDictionary:params]; | |
| 155 | + NSString *string = [NSString stringWithFormat:@"%@&key=%@", [CNLiveUserSystemTools signvalue:parameter], [CNLiveUserSystemTools verify:appKey]]; | |
| 156 | + NSString *signString = [[CNLiveUserSystemTools sha1:string] uppercaseString]; | |
| 157 | + | |
| 158 | + [parameter setObject:signString forKey:@"sign"]; | |
| 159 | + [self requestWithURL:thirdBindMobileLoginURL parameter:parameter success:success failure:failure]; | |
| 160 | +} | |
| 161 | + | |
| 106 | 162 | #pragma mark - request |
| 107 | 163 | |
| 108 | 164 | - (void)requestWithURL:(NSString *)URL parameter:(NSDictionary *)param success:(void(^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveUserInfo.h
| ... | ... | @@ -42,4 +42,9 @@ |
| 42 | 42 | */ |
| 43 | 43 | - (void)changePasswordWithAppId:(NSString *)appId appKey:(NSString *)appKey mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode newPassword:(NSString *)newPassword success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; |
| 44 | 44 | |
| 45 | +/** | |
| 46 | + * 通过原密码修改密码 | |
| 47 | + */ | |
| 48 | +- (void)oldPwdChangePasswordWithAppId:(NSString *)appId appKey:(NSString *)appKey uid:(NSString *)uid pwd:(NSString *)pwd newPwd:(NSString *)newPwd token:(NSString *)token success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 49 | + | |
| 45 | 50 | @end | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveUserInfo.m
| ... | ... | @@ -32,6 +32,8 @@ static NSString *updatePwdURL = @"https://api.cnlive.com/open/api2/use |
| 32 | 32 | //绑定第三方账号 |
| 33 | 33 | static NSString *BindingThirdURL = @"https://api.cnlive.com/open/api2/user/bind3rd"; |
| 34 | 34 | |
| 35 | +//通过原密码修改密码 | |
| 36 | +static NSString *oldPwdUpdatePwdURL = @"https://api.cnlive.com/open/api2/user/updatePwd"; | |
| 35 | 37 | |
| 36 | 38 | @implementation CNLiveUserInfo |
| 37 | 39 | |
| ... | ... | @@ -220,6 +222,28 @@ static NSString *BindingThirdURL = @"https://api.cnlive.com/open/api2/use |
| 220 | 222 | |
| 221 | 223 | } |
| 222 | 224 | |
| 225 | +/** | |
| 226 | + * 通过原密码修改密码 | |
| 227 | + */ | |
| 228 | +- (void)oldPwdChangePasswordWithAppId:(NSString *)appId appKey:(NSString *)appKey uid:(NSString *)uid pwd:(NSString *)pwd newPwd:(NSString *)newPwd token:(NSString *)token success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 229 | +{ | |
| 230 | + NSDictionary *params = @{@"appId":[CNLiveUserSystemTools verify:appId], | |
| 231 | + @"uid":[CNLiveUserSystemTools verify:uid], | |
| 232 | + @"pwd":[CNLiveUserSystemTools verify:pwd], | |
| 233 | + @"newPwd":[CNLiveUserSystemTools verify:newPwd], | |
| 234 | + @"clientPlat":@"i", | |
| 235 | + @"platform_id":[NSBundle mainBundle].bundleIdentifier, | |
| 236 | + @"token":[CNLiveUserSystemTools verify:token] | |
| 237 | + }; | |
| 238 | + | |
| 239 | + NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithDictionary:params]; | |
| 240 | + NSString *string = [NSString stringWithFormat:@"%@&key=%@", [CNLiveUserSystemTools signvalue:parameter], [CNLiveUserSystemTools verify:appKey]]; | |
| 241 | + NSString *signString = [[CNLiveUserSystemTools sha1:string] uppercaseString]; | |
| 242 | + | |
| 243 | + [parameter setObject:signString forKey:@"sign"]; | |
| 244 | + [self requestWithURL:oldPwdUpdatePwdURL parameter:parameter success:success failure:failure]; | |
| 245 | +} | |
| 246 | + | |
| 223 | 247 | #pragma mark - request |
| 224 | 248 | |
| 225 | 249 | - (void)requestWithURL:(NSString *)URL parameter:(NSDictionary *)param success:(void(^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveUserSystemCenter.h
| ... | ... | @@ -178,8 +178,86 @@ |
| 178 | 178 | |
| 179 | 179 | |
| 180 | 180 | /** |
| 181 | + 通过邮箱修改密码 | |
| 182 | + | |
| 183 | + @param email 邮箱 | |
| 184 | + @param newPwd 新密码 | |
| 185 | + @param success 成功回调 | |
| 186 | + @param failure 失败回调 | |
| 187 | + */ | |
| 188 | ++ (void)modifyPwdWithEmail:(NSString *)email newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 189 | + | |
| 190 | + | |
| 191 | +/** | |
| 192 | + 通过原密码修改密码 | |
| 193 | + | |
| 194 | + @param uid 用户ID | |
| 195 | + @param pwd 原密码 | |
| 196 | + @param newPwd 新密码 | |
| 197 | + @param success 成功回调 | |
| 198 | + @param failure 失败回调 | |
| 199 | + */ | |
| 200 | ++ (void)oldPwdChangePasswordWithUid:(NSString *)uid pwd:(NSString *)pwd newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 201 | + | |
| 202 | + | |
| 203 | +/** | |
| 204 | + 注册前校验手机验证码 | |
| 205 | + | |
| 206 | + @param mobile 手机号 | |
| 207 | + @param verificationCode 验证码 | |
| 208 | + @param success 成功回调 | |
| 209 | + @param getVersion 失败回调 | |
| 210 | + */ | |
| 211 | ++ (void)registerCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 212 | + | |
| 213 | + | |
| 214 | +/** | |
| 215 | + 快捷登录前校验手机验证码 | |
| 216 | + | |
| 217 | + @param mobile 手机号 | |
| 218 | + @param verificationCode 验证码 | |
| 219 | + @param success 成功回调 | |
| 220 | + @param failure 失败回调 | |
| 221 | + */ | |
| 222 | ++ (void)shortcutLoginCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 223 | + | |
| 224 | + | |
| 225 | +/** | |
| 226 | + 验证第三方账号是否注册,若注册则直接登录返回用户信息,若未注册返回errorCode | |
| 227 | + | |
| 228 | + @param plat 第三方平台编号(如plat: 1:sina weibo 2:qq 3:weixin 4:renren 注:如qq登录,plat=@"2") | |
| 229 | + @param thirdPartyId 第三方用户ID | |
| 230 | + @param frmId 渠道ID(非必填) | |
| 231 | + @param success 成功回调 | |
| 232 | + @param failure 失败回调 | |
| 233 | + */ | |
| 234 | ++ (void)thirdPartyCheckLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 235 | + | |
| 236 | + | |
| 237 | +/** | |
| 238 | + 第三方注册强制绑定手机号登录: 手机号+密码+验证码+三方账号 | |
| 239 | + | |
| 240 | + @param plat 第三方平台编号(如plat: 1:sina weibo 2:qq 3:weixin 4:renren 注:如qq登录,plat=@"2") | |
| 241 | + @param thirdPartyId 第三方用户ID | |
| 242 | + @param nickName 用户昵称 | |
| 243 | + @param gender 性别,m:男、f:女、n:未知(非必填) | |
| 244 | + @param location 用户所在地(非必填) | |
| 245 | + @param faceUrl 头像,约100*100(非必填) | |
| 246 | + @param mobile 手机号 | |
| 247 | + @param verificationCode 验证码 (验证码类型为快捷登录VerificationCodeTypeShortcutLogin) | |
| 248 | + @param pawd 注册密码 | |
| 249 | + @param frmId 渠道ID(非必填) | |
| 250 | + @param success 成功回调 | |
| 251 | + @param failure 失败回调 | |
| 252 | + */ | |
| 253 | ++ (void)thirdPartyBindMobileLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode pawd:(NSString *)pawd frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure; | |
| 254 | + | |
| 255 | + | |
| 256 | +/** | |
| 181 | 257 | * 获取SDK版本号 |
| 182 | 258 | */ |
| 183 | 259 | + (NSString *)getVersion; |
| 184 | 260 | |
| 261 | + | |
| 262 | + | |
| 185 | 263 | @end | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveUserSystemCenter.m
| ... | ... | @@ -15,6 +15,8 @@ |
| 15 | 15 | #import "CNLiveUserSystemTools.h" |
| 16 | 16 | #import "CNLiveUserManager.h" |
| 17 | 17 | #import "CNLiveUploadIcon.h" |
| 18 | +#import "CNLiveEmailModifyPassword.h" | |
| 19 | +#import "CNLiveCheckVerificationCode.h" | |
| 18 | 20 | #import "Common.h" |
| 19 | 21 | |
| 20 | 22 | @implementation CNLiveUserSystemCenter |
| ... | ... | @@ -170,6 +172,62 @@ |
| 170 | 172 | } |
| 171 | 173 | |
| 172 | 174 | /** |
| 175 | + * 通过邮箱修改密码 | |
| 176 | + */ | |
| 177 | ++ (void)modifyPwdWithEmail:(NSString *)email newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 178 | +{ | |
| 179 | + CNLiveEmailModifyPassword *emailModifyPwd = [[CNLiveEmailModifyPassword alloc] init]; | |
| 180 | + [emailModifyPwd modifyPwdWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey email:email newPwd:newPwd success:success failure:failure]; | |
| 181 | +} | |
| 182 | + | |
| 183 | +/** | |
| 184 | + * 通过原密码修改密码 | |
| 185 | + */ | |
| 186 | ++ (void)oldPwdChangePasswordWithUid:(NSString *)uid pwd:(NSString *)pwd newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 187 | +{ | |
| 188 | + CNLiveUserInfo *userInfo = [[CNLiveUserInfo alloc] init]; | |
| 189 | + [userInfo oldPwdChangePasswordWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey uid:uid pwd:pwd newPwd:newPwd token:[[self class] getToken] success:success failure:failure]; | |
| 190 | +} | |
| 191 | + | |
| 192 | +/** | |
| 193 | + * 注册前校验手机验证码 | |
| 194 | + */ | |
| 195 | ++ (void)registerCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 196 | +{ | |
| 197 | + CNLiveCheckVerificationCode *checkCode = [[CNLiveCheckVerificationCode alloc] init]; | |
| 198 | + [checkCode registerCheckVerificationCodeWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:CheckVerificationCodeTypeRegister mobile:mobile verificationCode:verificationCode success:success failure:failure]; | |
| 199 | +} | |
| 200 | + | |
| 201 | +/** | |
| 202 | + * 快捷登录前校验手机验证码 | |
| 203 | + */ | |
| 204 | ++ (void)shortcutLoginCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 205 | +{ | |
| 206 | + CNLiveCheckVerificationCode *checkCode = [[CNLiveCheckVerificationCode alloc] init]; | |
| 207 | + [checkCode shortcutLoginCheckVerificationCodeWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey type:CheckVerificationCodeTypeShortcutLogin mobile:mobile verificationCode:verificationCode success:success failure:failure]; | |
| 208 | +} | |
| 209 | + | |
| 210 | +/** | |
| 211 | + * 验证第三方账号是否注册,若注册直接登录返回用户信息,若未注册返回errorCode | |
| 212 | + */ | |
| 213 | ++ (void)thirdPartyCheckLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure | |
| 214 | +{ | |
| 215 | + CNLiveLogin *thirdLogin = [[CNLiveLogin alloc] init]; | |
| 216 | + | |
| 217 | + [thirdLogin thirdPartyCheckLoginWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey thirdPartyPlatType:plat thirdPartyId:thirdPartyId frmId:frmId success:success failure:failure]; | |
| 218 | +} | |
| 219 | + | |
| 220 | +/** | |
| 221 | + * 第三方注册强制绑定手机号: 手机号+密码+验证码+三方账号 | |
| 222 | + */ | |
| 223 | ++ (void)thirdPartyBindMobileLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode pawd:(NSString *)pawd frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure | |
| 224 | +{ | |
| 225 | + CNLiveLogin *thirdLogin = [[CNLiveLogin alloc] init]; | |
| 226 | + | |
| 227 | + [thirdLogin thirdPartyBindMobileLoginWithAppId:[CNLiveUserManager manager].appId appKey:[CNLiveUserManager manager].appKey thirdPartyPlatType:plat thirdPartyId:thirdPartyId nickName:nickName gender:gender location:location faceUrl:faceUrl mobile:mobile verificationCode:verificationCode pawd:pawd frmId:frmId success:success failure:failure]; | |
| 228 | +} | |
| 229 | + | |
| 230 | +/** | |
| 173 | 231 | * 获取版本号 |
| 174 | 232 | */ |
| 175 | 233 | + (NSString *)getVersion | ... | ... |
CNLiveUserSystemDemo/CNLiveUserSystemSDK/CNLiveUserSystemTypeDef.h
| ... | ... | @@ -24,4 +24,10 @@ typedef NS_ENUM(NSUInteger, UserInfoType) { |
| 24 | 24 | UserInfoTypeLocation, //联系方式(地址) |
| 25 | 25 | }; |
| 26 | 26 | |
| 27 | +//校验验证码 | |
| 28 | +typedef NS_ENUM(NSInteger, CheckVerificationCodeType) { | |
| 29 | + CheckVerificationCodeTypeRegister = 0,//注册前校验验证码 | |
| 30 | + CheckVerificationCodeTypeShortcutLogin //快捷登录前校验验证码 | |
| 31 | +}; | |
| 32 | + | |
| 27 | 33 | #endif /* CNLiveUserSystemTypeDef_h */ | ... | ... |
CNLiveUserSystemDemo/Conreollers/EmailViewController.h
0 → 100644
CNLiveUserSystemDemo/Conreollers/EmailViewController.m
0 → 100644
| 1 | +// | |
| 2 | +// EmailViewController.m | |
| 3 | +// CNLiveUserSystemDemo | |
| 4 | +// | |
| 5 | +// Created by 张旭 on 2017/5/27. | |
| 6 | +// Copyright © 2017年 zhulin. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "EmailViewController.h" | |
| 10 | + | |
| 11 | +@interface EmailViewController () | |
| 12 | + | |
| 13 | +@property (nonatomic ,strong) UITextField * _Nullable emailTF; | |
| 14 | +@property (nonatomic ,strong) UITextField * _Nullable pwdTF; | |
| 15 | +@property (nonatomic, strong) UIButton * _Nullable confirmBtn; | |
| 16 | + | |
| 17 | +@end | |
| 18 | + | |
| 19 | +@implementation EmailViewController | |
| 20 | + | |
| 21 | +- (void)viewDidLoad { | |
| 22 | + [super viewDidLoad]; | |
| 23 | + // Do any additional setup after loading the view. | |
| 24 | + self.view.backgroundColor = [UIColor whiteColor]; | |
| 25 | + | |
| 26 | + [self.view addSubview:self.emailTF]; | |
| 27 | + [self.view addSubview:self.pwdTF]; | |
| 28 | + [self.view addSubview:self.confirmBtn]; | |
| 29 | +} | |
| 30 | + | |
| 31 | +- (void)confirmBtnAction | |
| 32 | +{ | |
| 33 | + [CNLiveUserSystemCenter modifyPwdWithEmail:self.emailTF.text newPwd:self.pwdTF.text success:^(id result) { | |
| 34 | + NSLog(@"result: %@",result); | |
| 35 | + [Tools toast:result[@"errorMessage"]]; | |
| 36 | + | |
| 37 | + } failure:^(NSDictionary *errorDic) { | |
| 38 | + [Tools toast:[NSString stringWithFormat:@"errorCode : %@ \n errorMessage : %@", errorDic[@"errorCode"],errorDic[@"errorMessage"]]]; | |
| 39 | + }]; | |
| 40 | +} | |
| 41 | + | |
| 42 | +- (UIButton *)confirmBtn | |
| 43 | +{ | |
| 44 | + if (!_confirmBtn) { | |
| 45 | + _confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 46 | + [_confirmBtn setFrame:CGRectMake(10, 280, KScreenWidth - 20, 40)]; | |
| 47 | + [_confirmBtn setTitle:@"确 认" forState:UIControlStateNormal]; | |
| 48 | + [_confirmBtn addTarget:self action:@selector(confirmBtnAction) forControlEvents:UIControlEventTouchUpInside]; | |
| 49 | + _confirmBtn.titleLabel.font = [UIFont systemFontOfSize:18]; | |
| 50 | + [_confirmBtn setTitleColor:[UIColor colorWithRed:23/255.0 green:110/255.0 blue:254/255.0 alpha:1] forState:UIControlStateNormal]; | |
| 51 | + _confirmBtn.layer.cornerRadius = 20; | |
| 52 | + _confirmBtn.layer.masksToBounds = YES; | |
| 53 | + _confirmBtn.layer.borderColor = [UIColor blackColor].CGColor; | |
| 54 | + _confirmBtn.layer.borderWidth = 1; | |
| 55 | + } | |
| 56 | + return _confirmBtn; | |
| 57 | +} | |
| 58 | + | |
| 59 | +- (UITextField *)emailTF | |
| 60 | +{ | |
| 61 | + if (!_emailTF) { | |
| 62 | + _emailTF = [[UITextField alloc] initWithFrame:CGRectMake(10, 70, KScreenWidth - 20, 57)]; | |
| 63 | + _emailTF.placeholder = @"请输入您的邮箱"; | |
| 64 | + _emailTF.keyboardType = UIKeyboardTypeNamePhonePad; | |
| 65 | + _emailTF.clearButtonMode = UITextFieldViewModeWhileEditing; | |
| 66 | + _emailTF.font = [UIFont systemFontOfSize:17]; | |
| 67 | + } | |
| 68 | + return _emailTF; | |
| 69 | +} | |
| 70 | + | |
| 71 | +- (UITextField *)pwdTF | |
| 72 | +{ | |
| 73 | + if (!_pwdTF) { | |
| 74 | + _pwdTF = [[UITextField alloc] initWithFrame:CGRectMake(10, 70 + 57, KScreenWidth - 20, 57)]; | |
| 75 | + _pwdTF.placeholder = @"请输入您的新密码"; | |
| 76 | + _pwdTF.clearButtonMode = UITextFieldViewModeWhileEditing; | |
| 77 | + _pwdTF.keyboardType = UIKeyboardTypeNamePhonePad; | |
| 78 | + _pwdTF.font = [UIFont systemFontOfSize:17]; | |
| 79 | + } | |
| 80 | + return _pwdTF; | |
| 81 | +} | |
| 82 | + | |
| 83 | +- (void)didReceiveMemoryWarning { | |
| 84 | + [super didReceiveMemoryWarning]; | |
| 85 | + // Dispose of any resources that can be recreated. | |
| 86 | +} | |
| 87 | + | |
| 88 | +/* | |
| 89 | +#pragma mark - Navigation | |
| 90 | + | |
| 91 | +// In a storyboard-based application, you will often want to do a little preparation before navigation | |
| 92 | +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { | |
| 93 | + // Get the new view controller using [segue destinationViewController]. | |
| 94 | + // Pass the selected object to the new view controller. | |
| 95 | +} | |
| 96 | +*/ | |
| 97 | + | |
| 98 | +@end | ... | ... |
CNLiveUserSystemDemo/Conreollers/LoginViewController.m
| ... | ... | @@ -24,6 +24,10 @@ |
| 24 | 24 | @property (nonatomic, strong) UIButton *qqBtn; |
| 25 | 25 | @property (nonatomic, strong) UILabel *thirdpartyLoginLbl; |
| 26 | 26 | |
| 27 | +@property (nonatomic, strong) UIButton *checkThirdBtn; | |
| 28 | +@property (nonatomic, strong) UIButton *bindMobileBtn; | |
| 29 | +@property (nonatomic ,strong) UITextField *verificationCodeTF; | |
| 30 | +@property (nonatomic ,strong) NSDictionary *dic; | |
| 27 | 31 | @end |
| 28 | 32 | |
| 29 | 33 | @implementation LoginViewController |
| ... | ... | @@ -44,33 +48,49 @@ |
| 44 | 48 | [self.view addSubview:self.sinaBtn]; |
| 45 | 49 | [self.view addSubview:self.qqBtn]; |
| 46 | 50 | [self.view addSubview:self.thirdpartyLoginLbl]; |
| 51 | + [self.view addSubview:self.checkThirdBtn]; | |
| 52 | + [self.view addSubview:self.bindMobileBtn]; | |
| 53 | + [self.view addSubview:self.verificationCodeTF]; | |
| 47 | 54 | |
| 48 | 55 | UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.registBtn]; |
| 49 | 56 | self.navigationItem.rightBarButtonItem = rightBarButtonItem; |
| 50 | 57 | |
| 51 | - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:ThirdLoginSuccess object:nil]; | |
| 58 | + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess:) name:ThirdLoginSuccess object:nil]; | |
| 52 | 59 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginFailure) name:ThirdLoginFailure object:nil]; |
| 53 | - | |
| 54 | 60 | } |
| 55 | 61 | |
| 56 | 62 | #pragma mark - action |
| 57 | 63 | - (void)loginBtnAction |
| 58 | 64 | { |
| 59 | - [SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeClear]; | |
| 60 | - [SVProgressHUD show]; | |
| 61 | - | |
| 62 | - [CNLiveUserSystemCenter loginWithUserName:_idAndPwdView.idTF.text password:_idAndPwdView.pwdTF.text frmId:nil success:^(id result) { | |
| 63 | - | |
| 64 | - NSLog(@"登录 success------------%@",result); | |
| 65 | - [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 66 | - [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 67 | - [Tools setUserLogin:YES]; | |
| 68 | - [self.navigationController popViewControllerAnimated:YES]; | |
| 65 | + NSDictionary *dic = self.dic; | |
| 66 | + if (dic) {//三方强制绑定手机号登录 | |
| 67 | + [CNLiveUserSystemCenter thirdPartyBindMobileLoginWithThirdPartyPlatType:[dic objectForKey:@"platType"] thirdPartyId:dic[@"partyId"] nickName:@"testNickName" gender:[dic objectForKey:@"gender"] location:[dic objectForKey:@"location"] faceUrl:[dic objectForKey:@"faceUrl"] mobile:[dic objectForKey:@"mobile"] verificationCode:self.verificationCodeTF.text pawd:_idAndPwdView.pwdTF.text frmId:@"" success:^(id result) { | |
| 68 | + NSLog(@"BindMobile 登录------%@",result); | |
| 69 | + [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 70 | + [Tools setUserLogin:YES]; | |
| 71 | + [self.navigationController popViewControllerAnimated:YES]; | |
| 72 | + | |
| 73 | + } failure:^(NSDictionary *errorDic) { | |
| 74 | + NSLog(@"BindMobile 登录------%@",errorDic); | |
| 75 | + }]; | |
| 76 | + }else | |
| 77 | + {//普通登录或三方验证登录 | |
| 78 | + [SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeClear]; | |
| 79 | + [SVProgressHUD show]; | |
| 69 | 80 | |
| 70 | - } failure:^(NSDictionary *errorDic) { | |
| 71 | - [Tools toast:[NSString stringWithFormat:@"errorCode : %@ \n errorMessage : %@", errorDic[@"errorCode"],errorDic[@"errorMessage"]]]; | |
| 72 | - [SVProgressHUD dismiss]; | |
| 73 | - }]; | |
| 81 | + [CNLiveUserSystemCenter loginWithUserName:_idAndPwdView.idTF.text password:_idAndPwdView.pwdTF.text frmId:nil success:^(id result) { | |
| 82 | + | |
| 83 | + NSLog(@"登录 success------------%@",result); | |
| 84 | + [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 85 | + [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 86 | + [Tools setUserLogin:YES]; | |
| 87 | + [self.navigationController popViewControllerAnimated:YES]; | |
| 88 | + | |
| 89 | + } failure:^(NSDictionary *errorDic) { | |
| 90 | + [Tools toast:[NSString stringWithFormat:@"errorCode : %@ \n errorMessage : %@", errorDic[@"errorCode"],errorDic[@"errorMessage"]]]; | |
| 91 | + [SVProgressHUD dismiss]; | |
| 92 | + }]; | |
| 93 | + } | |
| 74 | 94 | } |
| 75 | 95 | |
| 76 | 96 | - (void)messageLoginBtnAction |
| ... | ... | @@ -102,9 +122,40 @@ |
| 102 | 122 | [[CNLiveThirdLoginManager manager] qqLoginIsBindingThirdParty:NO]; |
| 103 | 123 | } |
| 104 | 124 | |
| 105 | -- (void)loginSuccess | |
| 125 | +- (void)checkThirdBtnAction:(UIButton *)button | |
| 126 | +{ | |
| 127 | + button.selected = !button.selected; | |
| 128 | + BOOL isCheck = NO; | |
| 129 | + if (button.selected) { | |
| 130 | + isCheck = YES; | |
| 131 | + }else{ | |
| 132 | + isCheck = NO; | |
| 133 | + } | |
| 134 | + [CNLiveThirdLoginManager manager].thirdType = ThirdLoginTypeCheckIsRegister; | |
| 135 | +} | |
| 136 | + | |
| 137 | +- (void)bindMobileBtnAction:(UIButton *)button | |
| 106 | 138 | { |
| 107 | - [self.navigationController popViewControllerAnimated:YES]; | |
| 139 | + button.selected = !button.selected; | |
| 140 | + BOOL isCheck = NO; | |
| 141 | + if (button.selected) { | |
| 142 | + isCheck = YES; | |
| 143 | + }else{ | |
| 144 | + isCheck = NO; | |
| 145 | + } | |
| 146 | + [CNLiveThirdLoginManager manager].thirdType = ThirdLoginTypeBindMobile; | |
| 147 | + [CNLiveThirdLoginManager manager].bindMobile = _idAndPwdView.idTF.text; | |
| 148 | +} | |
| 149 | + | |
| 150 | +- (void)loginSuccess:(NSNotification *)noti | |
| 151 | +{ | |
| 152 | + if (noti.userInfo) | |
| 153 | + {//强制绑定手机号 | |
| 154 | + self.dic = noti.userInfo; | |
| 155 | + }else | |
| 156 | + {//普通三方登录和验证三方登录 | |
| 157 | + [self.navigationController popViewControllerAnimated:YES]; | |
| 158 | + } | |
| 108 | 159 | } |
| 109 | 160 | |
| 110 | 161 | - (void)loginFailure |
| ... | ... | @@ -121,6 +172,9 @@ |
| 121 | 172 | if ([self.idAndPwdView.pwdTF isFirstResponder]) { |
| 122 | 173 | [self.idAndPwdView.pwdTF resignFirstResponder]; |
| 123 | 174 | } |
| 175 | + if ([self.verificationCodeTF isFirstResponder]) { | |
| 176 | + [self.verificationCodeTF resignFirstResponder]; | |
| 177 | + } | |
| 124 | 178 | } |
| 125 | 179 | #pragma mark - getter |
| 126 | 180 | |
| ... | ... | @@ -244,6 +298,54 @@ |
| 244 | 298 | return _qqBtn; |
| 245 | 299 | } |
| 246 | 300 | |
| 301 | +- (UIButton *)checkThirdBtn | |
| 302 | +{ | |
| 303 | + if (!_checkThirdBtn) { | |
| 304 | + _checkThirdBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 305 | + [_checkThirdBtn setFrame:CGRectMake(SpaceWidth, KScreenHeight-100, 150, 40)]; | |
| 306 | + [_checkThirdBtn setTitle:@"三方登录" forState:UIControlStateNormal]; | |
| 307 | + [_checkThirdBtn setTitle:@"三方验证并登录" forState:UIControlStateSelected]; | |
| 308 | + [_checkThirdBtn addTarget:self action:@selector(checkThirdBtnAction:) forControlEvents:UIControlEventTouchUpInside]; | |
| 309 | + _checkThirdBtn.titleLabel.font = [UIFont systemFontOfSize:18]; | |
| 310 | + [_checkThirdBtn setTitleColor:[UIColor colorWithRed:23/255.0 green:110/255.0 blue:254/255.0 alpha:1] forState:UIControlStateNormal]; | |
| 311 | + _checkThirdBtn.layer.cornerRadius = 20; | |
| 312 | + _checkThirdBtn.layer.masksToBounds = YES; | |
| 313 | + _checkThirdBtn.layer.borderColor = [UIColor blackColor].CGColor; | |
| 314 | + _checkThirdBtn.layer.borderWidth = 1; | |
| 315 | + } | |
| 316 | + return _checkThirdBtn; | |
| 317 | +} | |
| 318 | + | |
| 319 | +- (UIButton *)bindMobileBtn | |
| 320 | +{ | |
| 321 | + if (!_bindMobileBtn) { | |
| 322 | + _bindMobileBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 323 | + [_bindMobileBtn setFrame:CGRectMake(SpaceWidth, KScreenHeight-50, 180, 40)]; | |
| 324 | + [_bindMobileBtn setTitle:@"三方登录" forState:UIControlStateNormal]; | |
| 325 | + [_bindMobileBtn setTitle:@"三方绑定手机号登录" forState:UIControlStateSelected]; | |
| 326 | + [_bindMobileBtn addTarget:self action:@selector(bindMobileBtnAction:) forControlEvents:UIControlEventTouchUpInside]; | |
| 327 | + _bindMobileBtn.titleLabel.font = [UIFont systemFontOfSize:18]; | |
| 328 | + [_bindMobileBtn setTitleColor:[UIColor colorWithRed:23/255.0 green:110/255.0 blue:254/255.0 alpha:1] forState:UIControlStateNormal]; | |
| 329 | + _bindMobileBtn.layer.cornerRadius = 20; | |
| 330 | + _bindMobileBtn.layer.masksToBounds = YES; | |
| 331 | + _bindMobileBtn.layer.borderColor = [UIColor blackColor].CGColor; | |
| 332 | + _bindMobileBtn.layer.borderWidth = 1; | |
| 333 | + } | |
| 334 | + return _bindMobileBtn; | |
| 335 | +} | |
| 336 | + | |
| 337 | +- (UITextField *)verificationCodeTF | |
| 338 | +{ | |
| 339 | + if (!_verificationCodeTF) { | |
| 340 | + _verificationCodeTF = [[UITextField alloc] initWithFrame:CGRectMake(SpaceWidth + 200, KScreenHeight-50, self.view.bounds.size.width - SpaceWidth - 200, 40)]; | |
| 341 | + _verificationCodeTF.font = [UIFont systemFontOfSize:17]; | |
| 342 | + _verificationCodeTF.keyboardType = UIKeyboardTypeNumberPad; | |
| 343 | + _verificationCodeTF.placeholder = @"请输入验证码"; | |
| 344 | + _verificationCodeTF.returnKeyType = UIReturnKeyDone; | |
| 345 | + } | |
| 346 | + return _verificationCodeTF; | |
| 347 | +} | |
| 348 | + | |
| 247 | 349 | - (void)didReceiveMemoryWarning { |
| 248 | 350 | [super didReceiveMemoryWarning]; |
| 249 | 351 | // Dispose of any resources that can be recreated. | ... | ... |
CNLiveUserSystemDemo/Conreollers/ModifyPwdViewController.h
0 → 100644
| 1 | +// | |
| 2 | +// ModifyPwdViewController.h | |
| 3 | +// CNLiveUserSystemDemo | |
| 4 | +// | |
| 5 | +// Created by 张旭 on 2017/5/27. | |
| 6 | +// Copyright © 2017年 zhulin. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import <UIKit/UIKit.h> | |
| 10 | + | |
| 11 | +typedef NS_ENUM(NSInteger, ModifyPwdType) {//枚举类型 | |
| 12 | + ModifyPwdTypeEmail = 1,//通过邮箱修改密码 | |
| 13 | + ModifyPwdTypeOldPwd //通过原密码修改密码 | |
| 14 | +}; | |
| 15 | + | |
| 16 | + | |
| 17 | +@interface ModifyPwdViewController : UIViewController | |
| 18 | + | |
| 19 | +@property (nonatomic ,assign) ModifyPwdType type; | |
| 20 | +@end | ... | ... |
CNLiveUserSystemDemo/Conreollers/ModifyPwdViewController.m
0 → 100644
| 1 | +// | |
| 2 | +// ModifyPwdViewController.m | |
| 3 | +// CNLiveUserSystemDemo | |
| 4 | +// | |
| 5 | +// Created by 张旭 on 2017/5/27. | |
| 6 | +// Copyright © 2017年 zhulin. All rights reserved. | |
| 7 | +// | |
| 8 | + | |
| 9 | +#import "ModifyPwdViewController.h" | |
| 10 | + | |
| 11 | +@interface ModifyPwdViewController () | |
| 12 | + | |
| 13 | +@property (nonatomic ,strong) UITextField * _Nullable emailTF; | |
| 14 | +@property (nonatomic ,strong) UITextField * _Nullable pwdTF; | |
| 15 | +@property (nonatomic, strong) UIButton * _Nullable confirmBtn; | |
| 16 | + | |
| 17 | +@end | |
| 18 | + | |
| 19 | +@implementation ModifyPwdViewController | |
| 20 | + | |
| 21 | +- (void)viewDidLoad { | |
| 22 | + [super viewDidLoad]; | |
| 23 | + // Do any additional setup after loading the view. | |
| 24 | + | |
| 25 | + self.view.backgroundColor = [UIColor whiteColor]; | |
| 26 | + | |
| 27 | + [self.view addSubview:self.emailTF]; | |
| 28 | + [self.view addSubview:self.pwdTF]; | |
| 29 | + [self.view addSubview:self.confirmBtn]; | |
| 30 | +} | |
| 31 | + | |
| 32 | + | |
| 33 | +- (void)confirmBtnAction | |
| 34 | +{ | |
| 35 | + if (self.type == ModifyPwdTypeEmail) { | |
| 36 | + [CNLiveUserSystemCenter modifyPwdWithEmail:self.emailTF.text newPwd:self.pwdTF.text success:^(id result) { | |
| 37 | + | |
| 38 | + [Tools toast:result[@"errorMessage"]]; | |
| 39 | + | |
| 40 | + } failure:^(NSDictionary *errorDic) { | |
| 41 | + [Tools toast:[NSString stringWithFormat:@"errorCode : %@ \n errorMessage : %@", errorDic[@"errorCode"],errorDic[@"errorMessage"]]]; | |
| 42 | + }]; | |
| 43 | + | |
| 44 | + }else if (self.type == ModifyPwdTypeOldPwd){ | |
| 45 | + UserInfoModel *model = [UserInfoModel modelWithKeyValues:[Tools getLocalUserInfo]]; | |
| 46 | + [CNLiveUserSystemCenter oldPwdChangePasswordWithUid:model.uid pwd:self.emailTF.text newPwd:self.pwdTF.text success:^(id result) { | |
| 47 | + | |
| 48 | + [Tools toast:result[@"errorMessage"]]; | |
| 49 | + } failure:^(NSDictionary *errorDic) { | |
| 50 | + [Tools toast:[NSString stringWithFormat:@"errorCode : %@ \n errorMessage : %@", errorDic[@"errorCode"],errorDic[@"errorMessage"]]]; | |
| 51 | + }]; | |
| 52 | + | |
| 53 | + } | |
| 54 | + | |
| 55 | + | |
| 56 | +} | |
| 57 | + | |
| 58 | +- (UIButton *)confirmBtn | |
| 59 | +{ | |
| 60 | + if (!_confirmBtn) { | |
| 61 | + _confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 62 | + [_confirmBtn setFrame:CGRectMake(10, 280, KScreenWidth - 20, 40)]; | |
| 63 | + [_confirmBtn setTitle:@"确 认" forState:UIControlStateNormal]; | |
| 64 | + [_confirmBtn addTarget:self action:@selector(confirmBtnAction) forControlEvents:UIControlEventTouchUpInside]; | |
| 65 | + _confirmBtn.titleLabel.font = [UIFont systemFontOfSize:18]; | |
| 66 | + [_confirmBtn setTitleColor:[UIColor colorWithRed:23/255.0 green:110/255.0 blue:254/255.0 alpha:1] forState:UIControlStateNormal]; | |
| 67 | + _confirmBtn.layer.cornerRadius = 20; | |
| 68 | + _confirmBtn.layer.masksToBounds = YES; | |
| 69 | + _confirmBtn.layer.borderColor = [UIColor blackColor].CGColor; | |
| 70 | + _confirmBtn.layer.borderWidth = 1; | |
| 71 | + } | |
| 72 | + return _confirmBtn; | |
| 73 | +} | |
| 74 | + | |
| 75 | +- (UITextField *)emailTF | |
| 76 | +{ | |
| 77 | + if (!_emailTF) { | |
| 78 | + _emailTF = [[UITextField alloc] initWithFrame:CGRectMake(10, 70, KScreenWidth - 20, 57)]; | |
| 79 | + if (self.type == ModifyPwdTypeEmail) { | |
| 80 | + _emailTF.placeholder = @"请输入您的邮箱"; | |
| 81 | + }else if (self.type == ModifyPwdTypeOldPwd){ | |
| 82 | + _emailTF.placeholder = @"请输入您的旧密码"; | |
| 83 | + } | |
| 84 | + _emailTF.keyboardType = UIKeyboardTypeNamePhonePad; | |
| 85 | + _emailTF.clearButtonMode = UITextFieldViewModeWhileEditing; | |
| 86 | + _emailTF.font = [UIFont systemFontOfSize:17]; | |
| 87 | + } | |
| 88 | + return _emailTF; | |
| 89 | +} | |
| 90 | + | |
| 91 | +- (UITextField *)pwdTF | |
| 92 | +{ | |
| 93 | + if (!_pwdTF) { | |
| 94 | + _pwdTF = [[UITextField alloc] initWithFrame:CGRectMake(10, 70 + 57, KScreenWidth - 20, 57)]; | |
| 95 | + _pwdTF.placeholder = @"请输入您的新密码"; | |
| 96 | + _pwdTF.clearButtonMode = UITextFieldViewModeWhileEditing; | |
| 97 | + _pwdTF.keyboardType = UIKeyboardTypeNamePhonePad; | |
| 98 | + _pwdTF.font = [UIFont systemFontOfSize:17]; | |
| 99 | + } | |
| 100 | + return _pwdTF; | |
| 101 | +} | |
| 102 | + | |
| 103 | + | |
| 104 | +- (void)didReceiveMemoryWarning { | |
| 105 | + [super didReceiveMemoryWarning]; | |
| 106 | + // Dispose of any resources that can be recreated. | |
| 107 | +} | |
| 108 | + | |
| 109 | +/* | |
| 110 | +#pragma mark - Navigation | |
| 111 | + | |
| 112 | +// In a storyboard-based application, you will often want to do a little preparation before navigation | |
| 113 | +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { | |
| 114 | + // Get the new view controller using [segue destinationViewController]. | |
| 115 | + // Pass the selected object to the new view controller. | |
| 116 | +} | |
| 117 | +*/ | |
| 118 | + | |
| 119 | +@end | ... | ... |
CNLiveUserSystemDemo/Conreollers/RegisterViewController.m
| ... | ... | @@ -15,6 +15,7 @@ |
| 15 | 15 | @property (nonatomic, strong) UIButton *verificationBtn; |
| 16 | 16 | @property (nonatomic, strong) UIButton *loginBtn; |
| 17 | 17 | @property (nonatomic, strong) dispatch_source_t timer; |
| 18 | +@property (nonatomic, strong) UIButton *checkCodeBtn; | |
| 18 | 19 | |
| 19 | 20 | @end |
| 20 | 21 | |
| ... | ... | @@ -39,7 +40,9 @@ |
| 39 | 40 | [self.view addSubview:self.registBasicInformationView]; |
| 40 | 41 | [self.view addSubview:self.verificationBtn]; |
| 41 | 42 | [self.view addSubview:self.loginBtn]; |
| 42 | - | |
| 43 | + if ([_type isEqualToString:@"register"] || [_type isEqualToString:@"quicklyLogin"]) { | |
| 44 | + [self.view addSubview:self.checkCodeBtn]; | |
| 45 | + } | |
| 43 | 46 | } |
| 44 | 47 | |
| 45 | 48 | #pragma mark - action |
| ... | ... | @@ -87,6 +90,15 @@ |
| 87 | 90 | } |
| 88 | 91 | } |
| 89 | 92 | |
| 93 | +- (void)checkCodeBtnAction | |
| 94 | +{ | |
| 95 | + [CNLiveUserSystemCenter shortcutLoginCheckVerificationCodeWithMobile:_registBasicInformationView.phoneTF.text verificationCode:_registBasicInformationView.verificationTF.text success:^(id result) { | |
| 96 | + [Tools toast:result[@"errorMessage"]]; | |
| 97 | + } failure:^(NSDictionary *errorDic) { | |
| 98 | + [Tools toast:[NSString stringWithFormat:@"errorCode : %@ \n errorMessage : %@", errorDic[@"errorCode"],errorDic[@"errorMessage"]]]; | |
| 99 | + }]; | |
| 100 | +} | |
| 101 | + | |
| 90 | 102 | - (void)stopTimer |
| 91 | 103 | { |
| 92 | 104 | [self.verificationBtn setTitle:@"发送验证码" forState:UIControlStateNormal]; |
| ... | ... | @@ -213,6 +225,24 @@ |
| 213 | 225 | return _registBasicInformationView; |
| 214 | 226 | } |
| 215 | 227 | |
| 228 | +- (UIButton *)checkCodeBtn | |
| 229 | +{ | |
| 230 | + if (!_checkCodeBtn) { | |
| 231 | + _checkCodeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | |
| 232 | + [_checkCodeBtn setFrame:CGRectMake(KScreenWidth - 105, 80 + 57, 95, 37)]; | |
| 233 | + [_checkCodeBtn setTitle:@"校验验证码" forState:UIControlStateNormal]; | |
| 234 | + [_checkCodeBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; | |
| 235 | + [_checkCodeBtn addTarget:self action:@selector(checkCodeBtnAction) forControlEvents:UIControlEventTouchUpInside]; | |
| 236 | + _checkCodeBtn.titleLabel.font = [UIFont systemFontOfSize:15]; | |
| 237 | + [_checkCodeBtn setTitleColor:[UIColor colorWithRed:23/255.0 green:110/255.0 blue:254/255.0 alpha:1] forState:UIControlStateNormal]; | |
| 238 | + _checkCodeBtn.layer.cornerRadius = 10; | |
| 239 | + _checkCodeBtn.layer.masksToBounds = YES; | |
| 240 | + _checkCodeBtn.layer.borderColor = [UIColor blackColor].CGColor; | |
| 241 | + _checkCodeBtn.layer.borderWidth = 1; | |
| 242 | + } | |
| 243 | + return _checkCodeBtn; | |
| 244 | +} | |
| 245 | + | |
| 216 | 246 | - (UIButton *)verificationBtn |
| 217 | 247 | { |
| 218 | 248 | if (!_verificationBtn) { | ... | ... |
CNLiveUserSystemDemo/Conreollers/ViewController.m
| ... | ... | @@ -14,6 +14,7 @@ |
| 14 | 14 | #import "UserInfoSava.h" |
| 15 | 15 | #import "ThirdPartyView.h" |
| 16 | 16 | #import "CNLiveThirdLoginManager.h" |
| 17 | +#import "ModifyPwdViewController.h" | |
| 17 | 18 | |
| 18 | 19 | @interface ViewController ()<UITableViewDelegate,UITableViewDataSource,ThirdPartyViewDelegate,UIGestureRecognizerDelegate> |
| 19 | 20 | { |
| ... | ... | @@ -47,7 +48,7 @@ |
| 47 | 48 | [self.view addSubview:self.loginBtn]; |
| 48 | 49 | [self.view addSubview:self.thirPartydView]; |
| 49 | 50 | |
| 50 | - _dataArr = @[@"通过手机号修改密码",@"更新附加信息",@"修改用户信息",@"查询用户信息",@"查询多条用户信息",@"反馈",@"绑定第三方账号"]; | |
| 51 | + _dataArr = @[@"通过手机号修改密码",@"更新附加信息",@"修改用户信息",@"查询用户信息",@"查询多条用户信息",@"反馈",@"绑定第三方账号",@"通过邮箱修改密码",@"通过原密码修改密码"]; | |
| 51 | 52 | |
| 52 | 53 | } |
| 53 | 54 | |
| ... | ... | @@ -234,6 +235,18 @@ |
| 234 | 235 | _thirPartydView.frame = CGRectMake(0, KScreenHeight-160, KScreenWidth, 160); |
| 235 | 236 | }]; |
| 236 | 237 | } |
| 238 | + | |
| 239 | + if (indexPath.row == 8) { //邮箱修改密码 | |
| 240 | + ModifyPwdViewController *modVC = [[ModifyPwdViewController alloc] init]; | |
| 241 | + modVC.type = ModifyPwdTypeEmail; | |
| 242 | + [self.navigationController pushViewController:modVC animated:YES]; | |
| 243 | + } | |
| 244 | + | |
| 245 | + if (indexPath.row == 9) { //原密码修改密码 | |
| 246 | + ModifyPwdViewController *modVC = [[ModifyPwdViewController alloc] init]; | |
| 247 | + modVC.type = ModifyPwdTypeOldPwd; | |
| 248 | + [self.navigationController pushViewController:modVC animated:YES]; | |
| 249 | + } | |
| 237 | 250 | } |
| 238 | 251 | |
| 239 | 252 | - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath | ... | ... |
CNLiveUserSystemDemo/Tools/CNLiveThirdLoginManager.h
| ... | ... | @@ -8,6 +8,13 @@ |
| 8 | 8 | |
| 9 | 9 | #import <Foundation/Foundation.h> |
| 10 | 10 | |
| 11 | +typedef NS_ENUM(NSInteger, ThirdLoginType) {//枚举类型 | |
| 12 | + ThirdLoginTypeCommon = 0,//普通三方登录 | |
| 13 | + ThirdLoginTypeCheckIsRegister ,//验证三方是否注册,注册过登录 | |
| 14 | + ThirdLoginTypeBindMobile //强制绑定手机号三方登录 | |
| 15 | +}; | |
| 16 | + | |
| 17 | + | |
| 11 | 18 | @interface CNLiveThirdLoginManager : NSObject |
| 12 | 19 | |
| 13 | 20 | + (CNLiveThirdLoginManager *)manager; |
| ... | ... | @@ -20,4 +27,7 @@ |
| 20 | 27 | |
| 21 | 28 | - (void)sinaLoginIsBindingThirdParty:(BOOL)Binding; |
| 22 | 29 | |
| 30 | +@property (nonatomic ,assign) ThirdLoginType thirdType; | |
| 31 | +@property (nonatomic ,copy) NSString * bindMobile; | |
| 32 | + | |
| 23 | 33 | @end | ... | ... |
CNLiveUserSystemDemo/Tools/CNLiveThirdLoginManager.m
| ... | ... | @@ -11,7 +11,7 @@ |
| 11 | 11 | #import <TencentOpenAPI/QQApiInterfaceObject.h> |
| 12 | 12 | #import <TencentOpenAPI/QQApiInterface.h> |
| 13 | 13 | |
| 14 | -#define verificationCode @"cnlive" | |
| 14 | +#define VerificationCode @"cnlive" | |
| 15 | 15 | |
| 16 | 16 | @interface CNLiveThirdLoginManager ()<WXApiDelegate,TencentSessionDelegate,TencentLoginDelegate,WBHttpRequestDelegate,WeiboSDKDelegate> |
| 17 | 17 | { |
| ... | ... | @@ -88,7 +88,7 @@ |
| 88 | 88 | if ([WXApi isWXAppInstalled]) { |
| 89 | 89 | SendAuthReq* req = [[SendAuthReq alloc] init]; |
| 90 | 90 | req.scope = @"snsapi_userinfo"; |
| 91 | - req.state = verificationCode; | |
| 91 | + req.state = VerificationCode; | |
| 92 | 92 | [WXApi sendReq:req]; |
| 93 | 93 | } |
| 94 | 94 | else { |
| ... | ... | @@ -150,17 +150,57 @@ |
| 150 | 150 | gender = @"n"; |
| 151 | 151 | } |
| 152 | 152 | |
| 153 | - [CNLiveUserSystemCenter thirdPartyLoginWithThirdPartyPlatType:@"2" thirdPartyId:[tencentOAuth getUserOpenID] nickName:[result objectForKey:@"nickname"] gender:gender location:[result objectForKey:@"city"] faceUrl:[result objectForKey:@"figureurl"] frmId:nil success:^(id result) { | |
| 154 | - NSLog(@"qq登录------%@",result); | |
| 155 | - | |
| 156 | - [Tools setUserLogin:YES]; | |
| 157 | - [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 158 | - [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 159 | - [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 160 | - | |
| 161 | - } failure:^(NSDictionary *errorDic) { | |
| 162 | - [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 163 | - }]; | |
| 153 | + switch (self.thirdType) { | |
| 154 | + case ThirdLoginTypeCommon: | |
| 155 | + { | |
| 156 | + [CNLiveUserSystemCenter thirdPartyLoginWithThirdPartyPlatType:@"2" thirdPartyId:[tencentOAuth getUserOpenID] nickName:[result objectForKey:@"nickname"] gender:gender location:[result objectForKey:@"city"] faceUrl:[result objectForKey:@"figureurl"] frmId:nil success:^(id result) { | |
| 157 | + NSLog(@"三方qq登录------%@",result); | |
| 158 | + | |
| 159 | + [Tools setUserLogin:YES]; | |
| 160 | + [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 161 | + [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 162 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 163 | + | |
| 164 | + } failure:^(NSDictionary *errorDic) { | |
| 165 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 166 | + }]; | |
| 167 | + } | |
| 168 | + break; | |
| 169 | + case ThirdLoginTypeCheckIsRegister: | |
| 170 | + { | |
| 171 | + [CNLiveUserSystemCenter thirdPartyCheckLoginWithThirdPartyPlatType:@"2" thirdPartyId:[tencentOAuth getUserOpenID] frmId:@"" success:^(id result) { | |
| 172 | + NSLog(@"验证三方qq登录------%@",result); | |
| 173 | + [Tools setUserLogin:YES]; | |
| 174 | + [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 175 | + [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 176 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 177 | + | |
| 178 | + } failure:^(NSDictionary *errorDic) { | |
| 179 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 180 | + }]; | |
| 181 | + } | |
| 182 | + break; | |
| 183 | + case ThirdLoginTypeBindMobile: | |
| 184 | + { | |
| 185 | + [CNLiveUserSystemCenter verificationCodeType:VerificationCodeTypeShortcutLogin mobile:self.bindMobile success:^(id result) { | |
| 186 | + NSLog(@"ver %@",result); | |
| 187 | + if ([result[@"errorCode"] isEqualToString:@"0"]) { | |
| 188 | + | |
| 189 | + NSString *location = [response.jsonResponse objectForKey:@"city"]; | |
| 190 | + NSString *teId = [tencentOAuth getUserOpenID]; | |
| 191 | + NSString *faceUrl = [response.jsonResponse objectForKey:@"figureurl_qq_2"]; | |
| 192 | + NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:teId,@"partyId",gender,@"gender",location,@"location",faceUrl,@"faceUrl",@"2",@"platType",self.bindMobile,@"mobile", nil]; | |
| 193 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:dic]; | |
| 194 | + } | |
| 195 | + | |
| 196 | + } failure:^(NSDictionary *errorDic) { | |
| 197 | + NSLog(@"%@",errorDic); | |
| 198 | + }]; | |
| 199 | + } | |
| 200 | + break; | |
| 201 | + default: | |
| 202 | + break; | |
| 203 | + } | |
| 164 | 204 | } |
| 165 | 205 | } |
| 166 | 206 | |
| ... | ... | @@ -197,8 +237,6 @@ |
| 197 | 237 | |
| 198 | 238 | [self getWeChatUserInfo:authResp]; |
| 199 | 239 | |
| 200 | -// } | |
| 201 | - | |
| 202 | 240 | } |
| 203 | 241 | else if (temp.errCode == -4) { |
| 204 | 242 | // 用户拒绝授权 |
| ... | ... | @@ -285,17 +323,58 @@ |
| 285 | 323 | break; |
| 286 | 324 | } |
| 287 | 325 | |
| 288 | - [CNLiveUserSystemCenter thirdPartyLoginWithThirdPartyPlatType:@"3" thirdPartyId:[dic objectForKey:@"openid"] nickName:[dic objectForKey:@"nickname"] gender:gender location:[dic objectForKey:@"country"] faceUrl:[dic objectForKey:@"headimgurl"] frmId:nil success:^(id result) { | |
| 289 | - NSLog(@"微信登录------%@",result); | |
| 290 | - | |
| 291 | - [Tools setUserLogin:YES]; | |
| 292 | - [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 293 | - [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 294 | - [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 295 | - | |
| 296 | - } failure:^(NSDictionary *errorDic) { | |
| 297 | - [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 298 | - }]; | |
| 326 | + switch (self.thirdType) { | |
| 327 | + case ThirdLoginTypeCommon: | |
| 328 | + { | |
| 329 | + | |
| 330 | + [CNLiveUserSystemCenter thirdPartyLoginWithThirdPartyPlatType:@"3" thirdPartyId:[dic objectForKey:@"openid"] nickName:[dic objectForKey:@"nickname"] gender:gender location:[dic objectForKey:@"country"] faceUrl:[dic objectForKey:@"headimgurl"] frmId:nil success:^(id result) { | |
| 331 | + NSLog(@"微信登录------%@",result); | |
| 332 | + | |
| 333 | + [Tools setUserLogin:YES]; | |
| 334 | + [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 335 | + [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 336 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 337 | + | |
| 338 | + } failure:^(NSDictionary *errorDic) { | |
| 339 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 340 | + }]; | |
| 341 | + } | |
| 342 | + break; | |
| 343 | + case ThirdLoginTypeCheckIsRegister: | |
| 344 | + { | |
| 345 | + [CNLiveUserSystemCenter thirdPartyCheckLoginWithThirdPartyPlatType:@"3" thirdPartyId:[dic objectForKey:@"openid"] frmId:@"" success:^(id result) { | |
| 346 | + NSLog(@"验证三方微信登录------%@",result); | |
| 347 | + [Tools setUserLogin:YES]; | |
| 348 | + [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 349 | + [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 350 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 351 | + | |
| 352 | + } failure:^(NSDictionary *errorDic) { | |
| 353 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 354 | + }]; | |
| 355 | + } | |
| 356 | + break; | |
| 357 | + case ThirdLoginTypeBindMobile: | |
| 358 | + { | |
| 359 | + [CNLiveUserSystemCenter verificationCodeType:VerificationCodeTypeShortcutLogin mobile:self.bindMobile success:^(id result) { | |
| 360 | + NSLog(@"ver %@",result); | |
| 361 | + if ([result[@"errorCode"] isEqualToString:@"0"]) { | |
| 362 | + | |
| 363 | + NSString *location = [dic objectForKey:@"country"]; | |
| 364 | + NSString *teId = [dic objectForKey:@"openid"]; | |
| 365 | + NSString *faceUrl = [dic objectForKey:@"headimgurl"]; | |
| 366 | + NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:teId,@"partyId",gender,@"gender",location,@"location",faceUrl,@"faceUrl",@"3",@"platType",self.bindMobile,@"mobile", nil]; | |
| 367 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:dic]; | |
| 368 | + } | |
| 369 | + | |
| 370 | + } failure:^(NSDictionary *errorDic) { | |
| 371 | + NSLog(@"%@",errorDic); | |
| 372 | + }]; | |
| 373 | + } | |
| 374 | + break; | |
| 375 | + default: | |
| 376 | + break; | |
| 377 | + } | |
| 299 | 378 | } |
| 300 | 379 | } |
| 301 | 380 | } |
| ... | ... | @@ -354,17 +433,57 @@ |
| 354 | 433 | gender = @"n"; |
| 355 | 434 | } |
| 356 | 435 | |
| 357 | - [CNLiveUserSystemCenter thirdPartyLoginWithThirdPartyPlatType:@"1" thirdPartyId:[dic objectForKey:@"id"] nickName:[dic objectForKey:@"name"] gender:gender location:[dic objectForKey:@"location"] faceUrl:[dic objectForKey:@"avatar_hd"] frmId:nil success:^(id result) { | |
| 358 | - NSLog(@"微博登录------%@",result); | |
| 359 | - | |
| 360 | - [Tools setUserLogin:YES]; | |
| 361 | - [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 362 | - [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 363 | - [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 364 | - | |
| 365 | - } failure:^(NSDictionary *errorDic) { | |
| 366 | - [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 367 | - }]; | |
| 436 | + switch (self.thirdType) { | |
| 437 | + case ThirdLoginTypeCommon: | |
| 438 | + { | |
| 439 | + [CNLiveUserSystemCenter thirdPartyLoginWithThirdPartyPlatType:@"1" thirdPartyId:[dic objectForKey:@"id"] nickName:[dic objectForKey:@"name"] gender:gender location:[dic objectForKey:@"location"] faceUrl:[dic objectForKey:@"avatar_hd"] frmId:nil success:^(id result) { | |
| 440 | + NSLog(@"微博登录------%@",result); | |
| 441 | + | |
| 442 | + [Tools setUserLogin:YES]; | |
| 443 | + [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 444 | + [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 445 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 446 | + | |
| 447 | + } failure:^(NSDictionary *errorDic) { | |
| 448 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 449 | + }]; | |
| 450 | + } | |
| 451 | + break; | |
| 452 | + case ThirdLoginTypeCheckIsRegister: | |
| 453 | + { | |
| 454 | + [CNLiveUserSystemCenter thirdPartyCheckLoginWithThirdPartyPlatType:@"1" thirdPartyId:[dic objectForKey:@"id"] frmId:@"" success:^(id result) { | |
| 455 | + NSLog(@"验证三方微博登录------%@",result); | |
| 456 | + [Tools setUserLogin:YES]; | |
| 457 | + [SVProgressHUD showSuccessWithStatus:@"登录成功"]; | |
| 458 | + [UserInfoSava saveUserinfoDic:result[@"data"]]; | |
| 459 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:nil]; | |
| 460 | + | |
| 461 | + } failure:^(NSDictionary *errorDic) { | |
| 462 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginFailure object:nil userInfo:nil]; | |
| 463 | + }]; | |
| 464 | + } | |
| 465 | + break; | |
| 466 | + case ThirdLoginTypeBindMobile: | |
| 467 | + { | |
| 468 | + [CNLiveUserSystemCenter verificationCodeType:VerificationCodeTypeShortcutLogin mobile:self.bindMobile success:^(id result) { | |
| 469 | + NSLog(@"ver %@",result); | |
| 470 | + if ([result[@"errorCode"] isEqualToString:@"0"]) { | |
| 471 | + | |
| 472 | + NSString *location = [dic objectForKey:@"location"]; | |
| 473 | + NSString *partyId = [dic objectForKey:@"id"]; | |
| 474 | + NSString *faceUrl = [dic objectForKey:@"avatar_hd"]; | |
| 475 | + NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:partyId,@"partyId",gender,@"gender",location,@"location",faceUrl,@"faceUrl",@"1",@"platType",self.bindMobile,@"mobile", nil]; | |
| 476 | + [[NSNotificationCenter defaultCenter] postNotificationName:ThirdLoginSuccess object:nil userInfo:dic]; | |
| 477 | + } | |
| 478 | + | |
| 479 | + } failure:^(NSDictionary *errorDic) { | |
| 480 | + NSLog(@"%@",errorDic); | |
| 481 | + }]; | |
| 482 | + } | |
| 483 | + break; | |
| 484 | + default: | |
| 485 | + break; | |
| 486 | + } | |
| 368 | 487 | } |
| 369 | 488 | } |
| 370 | 489 | } | ... | ... |
CNLiveUserSystemSDK.xcodeproj/xcuserdata/cnlive.xcuserdatad/xcschemes/CNLiveUserSystemSDK.xcscheme
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | |
| 2 | +<Scheme | |
| 3 | + LastUpgradeVersion = "0830" | |
| 4 | + version = "1.3"> | |
| 5 | + <BuildAction | |
| 6 | + parallelizeBuildables = "YES" | |
| 7 | + buildImplicitDependencies = "YES"> | |
| 8 | + <BuildActionEntries> | |
| 9 | + <BuildActionEntry | |
| 10 | + buildForTesting = "YES" | |
| 11 | + buildForRunning = "YES" | |
| 12 | + buildForProfiling = "YES" | |
| 13 | + buildForArchiving = "YES" | |
| 14 | + buildForAnalyzing = "YES"> | |
| 15 | + <BuildableReference | |
| 16 | + BuildableIdentifier = "primary" | |
| 17 | + BlueprintIdentifier = "818734E01DA8F5B900046D84" | |
| 18 | + BuildableName = "CNLiveUserSystemSDK.framework" | |
| 19 | + BlueprintName = "CNLiveUserSystemSDK" | |
| 20 | + ReferencedContainer = "container:CNLiveUserSystemSDK.xcodeproj"> | |
| 21 | + </BuildableReference> | |
| 22 | + </BuildActionEntry> | |
| 23 | + </BuildActionEntries> | |
| 24 | + </BuildAction> | |
| 25 | + <TestAction | |
| 26 | + buildConfiguration = "Debug" | |
| 27 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | |
| 28 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | |
| 29 | + shouldUseLaunchSchemeArgsEnv = "YES"> | |
| 30 | + <Testables> | |
| 31 | + </Testables> | |
| 32 | + <AdditionalOptions> | |
| 33 | + </AdditionalOptions> | |
| 34 | + </TestAction> | |
| 35 | + <LaunchAction | |
| 36 | + buildConfiguration = "Debug" | |
| 37 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | |
| 38 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | |
| 39 | + launchStyle = "0" | |
| 40 | + useCustomWorkingDirectory = "NO" | |
| 41 | + ignoresPersistentStateOnLaunch = "NO" | |
| 42 | + debugDocumentVersioning = "YES" | |
| 43 | + debugServiceExtension = "internal" | |
| 44 | + allowLocationSimulation = "YES"> | |
| 45 | + <MacroExpansion> | |
| 46 | + <BuildableReference | |
| 47 | + BuildableIdentifier = "primary" | |
| 48 | + BlueprintIdentifier = "818734E01DA8F5B900046D84" | |
| 49 | + BuildableName = "CNLiveUserSystemSDK.framework" | |
| 50 | + BlueprintName = "CNLiveUserSystemSDK" | |
| 51 | + ReferencedContainer = "container:CNLiveUserSystemSDK.xcodeproj"> | |
| 52 | + </BuildableReference> | |
| 53 | + </MacroExpansion> | |
| 54 | + <AdditionalOptions> | |
| 55 | + </AdditionalOptions> | |
| 56 | + </LaunchAction> | |
| 57 | + <ProfileAction | |
| 58 | + buildConfiguration = "Release" | |
| 59 | + shouldUseLaunchSchemeArgsEnv = "YES" | |
| 60 | + savedToolIdentifier = "" | |
| 61 | + useCustomWorkingDirectory = "NO" | |
| 62 | + debugDocumentVersioning = "YES"> | |
| 63 | + <MacroExpansion> | |
| 64 | + <BuildableReference | |
| 65 | + BuildableIdentifier = "primary" | |
| 66 | + BlueprintIdentifier = "818734E01DA8F5B900046D84" | |
| 67 | + BuildableName = "CNLiveUserSystemSDK.framework" | |
| 68 | + BlueprintName = "CNLiveUserSystemSDK" | |
| 69 | + ReferencedContainer = "container:CNLiveUserSystemSDK.xcodeproj"> | |
| 70 | + </BuildableReference> | |
| 71 | + </MacroExpansion> | |
| 72 | + </ProfileAction> | |
| 73 | + <AnalyzeAction | |
| 74 | + buildConfiguration = "Debug"> | |
| 75 | + </AnalyzeAction> | |
| 76 | + <ArchiveAction | |
| 77 | + buildConfiguration = "Release" | |
| 78 | + revealArchiveInOrganizer = "YES"> | |
| 79 | + </ArchiveAction> | |
| 80 | +</Scheme> | ... | ... |
Products/CNLiveUserSystemSDK.framework/CNLiveUserSystemSDK
No preview for this file type
Products/CNLiveUserSystemSDK.framework/Headers/CNLiveUserSystemCenter.h
| ... | ... | @@ -178,8 +178,86 @@ |
| 178 | 178 | |
| 179 | 179 | |
| 180 | 180 | /** |
| 181 | + 通过邮箱修改密码 | |
| 182 | + | |
| 183 | + @param email 邮箱 | |
| 184 | + @param newPwd 新密码 | |
| 185 | + @param success 成功回调 | |
| 186 | + @param failure 失败回调 | |
| 187 | + */ | |
| 188 | ++ (void)modifyPwdWithEmail:(NSString *)email newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 189 | + | |
| 190 | + | |
| 191 | +/** | |
| 192 | + 通过原密码修改密码 | |
| 193 | + | |
| 194 | + @param uid 用户ID | |
| 195 | + @param pwd 原密码 | |
| 196 | + @param newPwd 新密码 | |
| 197 | + @param success 成功回调 | |
| 198 | + @param failure 失败回调 | |
| 199 | + */ | |
| 200 | ++ (void)oldPwdChangePasswordWithUid:(NSString *)uid pwd:(NSString *)pwd newPwd:(NSString *)newPwd success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 201 | + | |
| 202 | + | |
| 203 | +/** | |
| 204 | + 注册前校验手机验证码 | |
| 205 | + | |
| 206 | + @param mobile 手机号 | |
| 207 | + @param verificationCode 验证码 | |
| 208 | + @param success 成功回调 | |
| 209 | + @param getVersion 失败回调 | |
| 210 | + */ | |
| 211 | ++ (void)registerCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 212 | + | |
| 213 | + | |
| 214 | +/** | |
| 215 | + 快捷登录前校验手机验证码 | |
| 216 | + | |
| 217 | + @param mobile 手机号 | |
| 218 | + @param verificationCode 验证码 | |
| 219 | + @param success 成功回调 | |
| 220 | + @param failure 失败回调 | |
| 221 | + */ | |
| 222 | ++ (void)shortcutLoginCheckVerificationCodeWithMobile:(NSString *)mobile verificationCode:(NSString *)verificationCode success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 223 | + | |
| 224 | + | |
| 225 | +/** | |
| 226 | + 验证第三方账号是否注册,若注册则直接登录返回用户信息,若未注册返回errorCode | |
| 227 | + | |
| 228 | + @param plat 第三方平台编号(如plat: 1:sina weibo 2:qq 3:weixin 4:renren 注:如qq登录,plat=@"2") | |
| 229 | + @param thirdPartyId 第三方用户ID | |
| 230 | + @param frmId 渠道ID(非必填) | |
| 231 | + @param success 成功回调 | |
| 232 | + @param failure 失败回调 | |
| 233 | + */ | |
| 234 | ++ (void)thirdPartyCheckLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId frmId:(NSString *)frmId success:(void (^)(id result))success failure :(void (^)(NSDictionary *errorDic))failure; | |
| 235 | + | |
| 236 | + | |
| 237 | +/** | |
| 238 | + 第三方注册强制绑定手机号登录: 手机号+密码+验证码+三方账号 | |
| 239 | + | |
| 240 | + @param plat 第三方平台编号(如plat: 1:sina weibo 2:qq 3:weixin 4:renren 注:如qq登录,plat=@"2") | |
| 241 | + @param thirdPartyId 第三方用户ID | |
| 242 | + @param nickName 用户昵称 | |
| 243 | + @param gender 性别,m:男、f:女、n:未知(非必填) | |
| 244 | + @param location 用户所在地(非必填) | |
| 245 | + @param faceUrl 头像,约100*100(非必填) | |
| 246 | + @param mobile 手机号 | |
| 247 | + @param verificationCode 验证码 (验证码类型为快捷登录VerificationCodeTypeShortcutLogin) | |
| 248 | + @param pawd 注册密码 | |
| 249 | + @param frmId 渠道ID(非必填) | |
| 250 | + @param success 成功回调 | |
| 251 | + @param failure 失败回调 | |
| 252 | + */ | |
| 253 | ++ (void)thirdPartyBindMobileLoginWithThirdPartyPlatType:(NSString *)plat thirdPartyId:(NSString *)thirdPartyId nickName:(NSString *)nickName gender:(NSString *)gender location:(NSString *)location faceUrl:(NSString *)faceUrl mobile:(NSString *)mobile verificationCode:(NSString *)verificationCode pawd:(NSString *)pawd frmId:(NSString *)frmId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure; | |
| 254 | + | |
| 255 | + | |
| 256 | +/** | |
| 181 | 257 | * 获取SDK版本号 |
| 182 | 258 | */ |
| 183 | 259 | + (NSString *)getVersion; |
| 184 | 260 | |
| 261 | + | |
| 262 | + | |
| 185 | 263 | @end | ... | ... |
Products/CNLiveUserSystemSDK.framework/Headers/CNLiveUserSystemTypeDef.h
| ... | ... | @@ -24,4 +24,10 @@ typedef NS_ENUM(NSUInteger, UserInfoType) { |
| 24 | 24 | UserInfoTypeLocation, //联系方式(地址) |
| 25 | 25 | }; |
| 26 | 26 | |
| 27 | +//校验验证码 | |
| 28 | +typedef NS_ENUM(NSInteger, CheckVerificationCodeType) { | |
| 29 | + CheckVerificationCodeTypeRegister = 0,//注册前校验验证码 | |
| 30 | + CheckVerificationCodeTypeShortcutLogin //快捷登录前校验验证码 | |
| 31 | +}; | |
| 32 | + | |
| 27 | 33 | #endif /* CNLiveUserSystemTypeDef_h */ | ... | ... |
Products/CNLiveUserSystemSDK.framework/Info.plist
No preview for this file type