BogoLoginViewController.m 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554
  1. //
  2. // BogoLoginViewController.m
  3. // BuguLive
  4. //
  5. // Created by 宋晨光 on 2021/9/24.
  6. // Copyright © 2021 xfg. All rights reserved.
  7. //
  8. #import "BogoLoginViewController.h"
  9. #import "BogoThirdLoginViewController.h"
  10. #import "XYCountryCodeViewController.h"
  11. #import "AppleIDManager.h"
  12. //#import <FBSDKCoreKit/FBSDKCoreKit.h>
  13. //#import <FBSDKLoginKit/FBSDKLoginKit.h>
  14. #import "BGFirebaseSMS.h"
  15. @import FirebaseCore;
  16. @import GoogleSignIn;
  17. @import FirebaseAuth;
  18. @interface BogoLoginViewController ()<UITextFieldDelegate,UITextViewDelegate>
  19. @property(weak, nonatomic) IBOutlet GIDSignInButton *signInButton;
  20. //@property (weak, nonatomic) IBOutlet UIImageView *navBgImgV;
  21. @property (weak, nonatomic) IBOutlet UITextField *phoneT;
  22. @property (weak, nonatomic) IBOutlet UITextField *passwordT;
  23. @property (weak, nonatomic) IBOutlet UITextField *confirmPasswordT;
  24. @property (weak, nonatomic) IBOutlet QMUIButton *codeBtn;
  25. @property (weak, nonatomic) IBOutlet QMUIButton *areaBtn;
  26. @property (weak, nonatomic) IBOutlet UIButton *confirmBtn;
  27. @property (weak, nonatomic) IBOutlet UITextView *agreeT;
  28. @property(nonatomic, assign) BOOL isSelect;
  29. @property (weak, nonatomic) IBOutlet UIButton *selectBtn;
  30. @property (weak, nonatomic) IBOutlet UIButton *passwordLoginBtn;
  31. @property (weak, nonatomic) IBOutlet UILabel *phoneTitleL;
  32. @property (weak, nonatomic) IBOutlet UILabel *titleL;
  33. @property (weak, nonatomic) IBOutlet UILabel *subTitleL;
  34. @property (weak, nonatomic) IBOutlet UIButton *forgetBtn;
  35. @property (weak, nonatomic) IBOutlet UIView *passwordView;
  36. @property (weak, nonatomic) IBOutlet UIView *confirmPasswordView;
  37. @property (weak, nonatomic) IBOutlet UIView *navView;
  38. @property (weak, nonatomic) IBOutlet UILabel *navTitleLabel;
  39. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *topConstraint;
  40. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *phoneLeftConstraint;
  41. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *phoneTopConstraint;
  42. @property (weak, nonatomic) IBOutlet UIView *thirdView;
  43. @property (weak, nonatomic) IBOutlet UIButton *googleBtn;
  44. //只在更换手机号界面显示 BOGO_LOGIN_TYPE_PHONE_CHANGE
  45. @property (weak, nonatomic) IBOutlet UIView *codeView;
  46. @property (weak, nonatomic) IBOutlet QMUIButton *codeAreaBtn;
  47. @property (weak, nonatomic) IBOutlet UITextField *codePhoneT;
  48. @property (weak, nonatomic) IBOutlet UIButton *wxBtn;
  49. @property (weak, nonatomic) IBOutlet UIButton *qqBtn;
  50. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *qqConstraint;
  51. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *wxConstraint;
  52. @property (weak, nonatomic) IBOutlet UIButton *facebookBtn;
  53. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *facebookConstraint;
  54. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *agreeTWidthConstraint;
  55. @property (weak, nonatomic) IBOutlet UILabel *thirdLoginL;
  56. //@property(nonatomic, strong) FBSDKLoginManager *fbManager;
  57. //fbManager = [[FBSDKLoginManager alloc] init];
  58. @property(nonatomic, assign) int tryCount;
  59. @end
  60. @implementation BogoLoginViewController{
  61. NSTimer *_timer; //定时器
  62. int _timeCount; //定时器时间
  63. }
  64. - (void)viewDidLoad {
  65. [super viewDidLoad];
  66. // Do any additional setup after loading the view from its nib.
  67. UITapGestureRecognizer *tapView = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickBgView:)];
  68. [self.view addGestureRecognizer:tapView];
  69. self.isSelect = NO;
  70. self.selectBtn.hidden = YES;
  71. // [self.selectBtn setImage:[UIImage imageNamed:@"mg_circle_select_normal"] forState:UIControlStateNormal];
  72. self.thirdLoginL.text = ASLocalizedString(@"第三方登录");
  73. [self.forgetBtn setTitle:ASLocalizedString(@"忘记密码?") forState:UIControlStateNormal];
  74. if (!self.areaModel) {
  75. self.areaModel = [BogoChoiceAreaModel new];
  76. self.areaModel.area_code = @"+86";
  77. }
  78. self.tryCount = 0;
  79. self.phoneT.delegate = self;
  80. [self.phoneT addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
  81. self.phoneT.keyboardType = UIKeyboardTypeNumberPad;
  82. self.areaBtn.imagePosition = QMUIButtonImagePositionRight;
  83. self.areaBtn.spacingBetweenImageAndTitle = 3;
  84. self.codeAreaBtn.imagePosition = QMUIButtonImagePositionRight;
  85. self.codeAreaBtn.spacingBetweenImageAndTitle = 3;
  86. [self setAgreeTextView];
  87. [self setPlaceholderTextWithTextfield:self.phoneT];
  88. [self setPlaceholderTextWithTextfield:self.passwordT];
  89. [self setPlaceholderTextWithTextfield:self.confirmPasswordT];
  90. [self setPlaceholderTextWithTextfield:self.codePhoneT];
  91. //四个界面布局修改
  92. [self changeLoginStatusView];
  93. self.topConstraint.constant = kStatusBarHeight;
  94. if (_loginType == BOGO_LOGIN_TYPE_PHONE_CONFIRM || _loginType == BOGO_LOGIN_TYPE_PHONE_CHANGE) {
  95. self.confirmBtn.enabled = NO;
  96. return;
  97. }
  98. if (isIPhone6()) {
  99. self.agreeTWidthConstraint.constant = 275;
  100. }else{
  101. self.agreeTWidthConstraint.constant = 275;
  102. }
  103. self.googleBtn.imageView.contentMode = UIViewContentModeScaleAspectFit;
  104. self.confirmBtn.backgroundColor = UIColor.clearColor;
  105. }
  106. - (void)backLastVC {
  107. [self.navigationController popViewControllerAnimated:YES];
  108. }
  109. - (void)setPhoneNum:(NSString *)phoneNum{
  110. _phoneNum = phoneNum;
  111. _timeCount = 60;
  112. [self changeLoginStatusView];
  113. //只有验证码登录界面自动发送
  114. if (self.loginType != BOGO_LOGIN_TYPE_CODE_LOGIN) {
  115. return;
  116. }
  117. [self getConfirmCodeBtn:self.codeBtn];
  118. }
  119. - (void)setTel_code:(NSString *)tel_code{
  120. _tel_code = tel_code;
  121. self.areaModel = [BogoChoiceAreaModel new];
  122. self.areaModel.area_code = tel_code;
  123. }
  124. -(void)textFieldDidChange:(UITextField *)textField{
  125. if (textField.text.length > 11) {
  126. self.phoneT.text = [textField.text substringToIndex:11];
  127. [FanweMessage alertHUD:ASLocalizedString(@"手机号限制11位数!")];
  128. }
  129. if (self.loginType == BOGO_LOGIN_TYPE_PHONE_CONFIRM){
  130. if (self.phoneT.text.length > 3) {
  131. self.confirmBtn.enabled = YES;
  132. }else{
  133. self.confirmBtn.enabled = NO;
  134. }
  135. }
  136. if (self.loginType == BOGO_LOGIN_TYPE_PHONE_CHANGE){
  137. if (self.phoneT.text.length > 3 && self.codePhoneT.text.length > 10) {
  138. self.confirmBtn.enabled = YES;
  139. }else{
  140. self.confirmBtn.enabled = NO;
  141. }
  142. }
  143. }
  144. -(void)clickBgView:(UITapGestureRecognizer *)sender{
  145. [self.view endEditing:YES];
  146. }
  147. -(void)changeLoginStatusView{
  148. self.codeBtn.hidden = YES;
  149. self.passwordView.hidden = YES;
  150. self.passwordLoginBtn.hidden = self.forgetBtn.hidden = YES;
  151. self.navView.hidden = NO;
  152. self.thirdView.hidden = YES;
  153. self.phoneTitleL.hidden = YES;
  154. self.codePhoneT.hidden = self.codeView.hidden = self.codeAreaBtn.hidden =YES;
  155. self.selectBtn.hidden = self.agreeT.hidden = YES;
  156. self.qqBtn.hidden = self.wxBtn.hidden = YES;
  157. [self changeThirdView];
  158. if (self.loginType == BOGO_LOGIN_TYPE_CODE) {
  159. self.navView.hidden = YES;
  160. self.phoneT.placeholder = ASLocalizedString(@"请输入手机号");
  161. self.titleL.text = ASLocalizedString(@"手机验证码登录");
  162. self.subTitleL.text = ASLocalizedString(@"未注册的用户验证后将自动创建账户");
  163. self.passwordLoginBtn.hidden = NO;
  164. self.thirdView.hidden = YES;
  165. self.selectBtn.hidden = self.agreeT.hidden = NO;
  166. self.passwordLoginBtn.backgroundColor = UIColor.grayColor;
  167. [self.passwordLoginBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal];
  168. self.passwordLoginBtn.titleLabel.font = [UIFont systemFontOfSize:14];
  169. [self.passwordLoginBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
  170. make.top.equalTo(self.confirmBtn.mas_bottom).offset(10);
  171. make.height.mas_equalTo(45);
  172. make.left.right.equalTo(self.confirmBtn);
  173. }];
  174. [self.passwordLoginBtn.layer setCornerRadius:22.5];
  175. [self.passwordLoginBtn.layer setMasksToBounds:YES];
  176. }else if (self.loginType == BOGO_LOGIN_TYPE_CODE_LOGIN){
  177. self.navTitleLabel.hidden = YES;
  178. self.areaBtn.hidden = YES;
  179. self.phoneLeftConstraint.constant = 15;
  180. self.phoneT.placeholder = ASLocalizedString(@"请输入验证码");
  181. [self.confirmBtn setTitle:ASLocalizedString(@"登录") forState:UIControlStateNormal];
  182. self.titleL.text = ASLocalizedString(@"手机验证码登录");
  183. self.subTitleL.text = [NSString stringWithFormat:@"%@%@ %@",ASLocalizedString(@"验证码将发送至"),self.areaModel.area_code,_phoneNum];
  184. self.passwordLoginBtn.hidden = self.codeBtn.hidden = NO;
  185. }else if (self.loginType == BOGO_LOGIN_TYPE_PHONE){
  186. if (self.loginType == BOGO_LOGIN_TYPE_PHONE) {
  187. self.phoneT.text = _phoneNum;
  188. }
  189. self.thirdView.hidden = YES;
  190. self.navView.hidden = YES;
  191. self.passwordView.hidden = NO;
  192. self.phoneT.placeholder = ASLocalizedString(@"请输入手机号");
  193. self.titleL.text = ASLocalizedString(@"账号密码登录");
  194. self.codeBtn.hidden = YES;
  195. self.subTitleL.hidden = YES;
  196. self.forgetBtn.hidden = NO;
  197. self.forgetBtn.hidden = self.passwordLoginBtn.hidden = NO;
  198. [self.passwordLoginBtn setTitle:ASLocalizedString(@"手机验证码登录") forState:UIControlStateNormal];
  199. [self.confirmBtn setTitle:ASLocalizedString(@"登录") forState:UIControlStateNormal];
  200. self.selectBtn.hidden = self.agreeT.hidden = NO;
  201. }else if (self.loginType == BOGO_LOGIN_TYPE_FORGET){
  202. self.navTitleLabel.text = ASLocalizedString(@"忘记密码");
  203. self.phoneT.placeholder = ASLocalizedString(@"请输入手机号");
  204. self.titleL.text = ASLocalizedString(@"请输入忘记密码的账号");
  205. [self.confirmBtn setTitle:ASLocalizedString(@"下一步") forState:UIControlStateNormal];
  206. self.subTitleL.hidden = YES;
  207. }else if (self.loginType == BOGO_LOGIN_TYPE_FORGET_CODE){
  208. self.navTitleLabel.text = ASLocalizedString(@"设置登录密码");
  209. self.confirmPasswordView.hidden = self.passwordView.hidden = NO;
  210. self.phoneTitleL.hidden = NO;
  211. self.phoneTopConstraint.constant = 20;
  212. self.phoneLeftConstraint.constant = 15;
  213. self.phoneT.placeholder = ASLocalizedString(@"请输入验证码");
  214. if (_phoneNum.length < 10) {
  215. return;
  216. }
  217. self.phoneTitleL.text = [NSString stringWithFormat:@"%@%@ %@****%@",ASLocalizedString(@"当前手机号"),self.areaModel.area_code,[_phoneNum substringToIndex:3],[_phoneNum substringFromIndex:_phoneNum.length - 4]];
  218. [self.confirmBtn setTitle:ASLocalizedString(@"确定") forState:UIControlStateNormal];
  219. self.titleL.hidden = self.subTitleL.hidden = self.thirdView.hidden = YES;
  220. self.areaBtn.hidden = YES;
  221. self.codeBtn.hidden = NO;
  222. }else if(_loginType == BOGO_LOGIN_TYPE_PHONE_CONFIRM){
  223. self.navTitleLabel.text = ASLocalizedString(@"手机号验证");
  224. self.phoneTitleL.hidden = NO;
  225. self.phoneTopConstraint.constant = 20;
  226. self.phoneLeftConstraint.constant = 15;
  227. self.phoneT.placeholder = ASLocalizedString(@"请输入验证码");
  228. self.phoneTitleL.text = [NSString stringWithFormat:@"%@%@ %@",ASLocalizedString(@"当前手机号"),self.areaModel.area_code,_phoneNum];
  229. [self.confirmBtn setTitle:ASLocalizedString(@"下一步") forState:UIControlStateNormal];
  230. self.confirmBtn.backgroundColor = UIColor.clearColor;
  231. self.titleL.hidden = self.subTitleL.hidden = self.thirdView.hidden = YES;
  232. self.areaBtn.hidden = YES;
  233. self.codeBtn.hidden = NO;
  234. }else if(_loginType == BOGO_LOGIN_TYPE_PHONE_CHANGE){
  235. self.navTitleLabel.text = ASLocalizedString(@"更换手机号");
  236. self.phoneTopConstraint.constant = 0;
  237. self.phoneLeftConstraint.constant = 15;
  238. self.phoneT.placeholder = ASLocalizedString(@"请输入验证码");
  239. [self.confirmBtn setTitle:ASLocalizedString(@"确定") forState:UIControlStateNormal];
  240. self.titleL.hidden = self.subTitleL.hidden = self.thirdView.hidden = YES;
  241. self.codeAreaBtn.hidden = NO;
  242. self.codeBtn.hidden = NO;
  243. self.codePhoneT.hidden = NO;
  244. self.codeView.hidden = NO;
  245. self.areaBtn.hidden = YES;
  246. }
  247. }
  248. -(void)changeThirdView{
  249. //第三方
  250. NSMutableArray *thirdArr = [NSMutableArray array];
  251. if ([GlobalVariables sharedInstance].appModel.has_qq_login == 1)//QQ
  252. {
  253. [thirdArr addObject:@"1"];
  254. self.qqBtn.hidden = NO;
  255. }
  256. if ([GlobalVariables sharedInstance].appModel.has_wx_login == 1)//微信
  257. {
  258. [thirdArr addObject:@"2"];
  259. self.wxBtn.hidden = NO;
  260. }
  261. /*
  262. if (@available(iOS 13.0, *) && self.thirdView) {
  263. AppleIDManager *manager = [AppleIDManager defaultManager];
  264. manager.window = [AppDelegate sharedAppDelegate].window;
  265. [self.thirdView addSubview:manager.loginBtn];
  266. manager.loginBtn.layer.cornerRadius = 20;
  267. manager.loginBtn.clipsToBounds = YES;
  268. // manager.loginBtn.backgroundColor = kgrar
  269. [manager.loginBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  270. make.centerX.equalTo(self.thirdView).offset(80);
  271. make.height.width.mas_equalTo(@40);
  272. make.centerY.equalTo(self.wxBtn);
  273. }];
  274. // .frame = button.frame;
  275. [self.thirdView addSubview:manager.loginBtn];
  276. [thirdArr addObject:@"3"];
  277. self.wxBtn.hidden = NO;
  278. [AppleIDManager defaultManager].successBlock = ^(NSString * _Nonnull authorizationCode, NSString * _Nonnull identityToken, NSString * _Nonnull user) {
  279. // if (self.isSelect == NO) {
  280. // [FanweMessage alertHUD:ASLocalizedString(@"请先阅读并勾选协议")];
  281. // return;
  282. // }
  283. // http://livev2020.bogokj.com/mapi/index.php?ctl=login&act=apple_login&user_id=001872.a22fc8cc2d0a4d0bacaf109007e19351.0650&verify_token=&nickname=
  284. FWWeakify(self)
  285. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  286. [parmDict setObject:@"login" forKey:@"ctl"];
  287. [parmDict setObject:@"apple_login" forKey:@"act"];
  288. [parmDict setObject:user forKey:@"user_id"];
  289. [parmDict setObject:identityToken forKey:@"verify_token"];
  290. [parmDict setObject:@"" forKey:@"nickname"];
  291. [self showMyHud];
  292. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  293. {
  294. FWStrongify(self)
  295. [self hideMyHud];
  296. if ([responseJson toInt:@"status"] == 1)
  297. {
  298. UserModel *model = [UserModel modelWithDictionary:responseJson[@"user_info"]];
  299. model.need_bind_mobile = [responseJson[@"need_bind_mobile"] integerValue];
  300. // model.access_token = resp.accessToken;
  301. // if (model.need_bind_mobile == 0) {
  302. [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  303. [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  304. self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  305. // self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  306. // self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  307. [GlobalVariables sharedInstance].token = [responseJson toString:@"token"];
  308. [[BGIMLoginManager sharedInstance] getUserSig:^{
  309. [[AppDelegate sharedAppDelegate] enterMainUI];
  310. [self hideMyHud];
  311. } failed:^(int errId, NSString *errMsg) {
  312. [self hideMyHud];
  313. }];
  314. }
  315. // }else{
  316. // [FanweMessage alertHUD:[responseJson toString:@"error"]];
  317. // }
  318. } FailureBlock:^(NSError *error) {
  319. // FWStrongify(self)
  320. [self showMyHud];
  321. [FanweMessage alertHUD:error];
  322. }];
  323. };
  324. [AppleIDManager defaultManager].failureBlock = ^(NSString * _Nonnull errorMsg) {
  325. // [[HUDHelper sharedInstance] tipMessage:errorMsg];
  326. [FanweMessage alertHUD:errorMsg];
  327. };
  328. }*/
  329. if (thirdArr.count == 1) {
  330. self.wxConstraint.constant = 0;
  331. self.qqConstraint.constant = 0;
  332. }
  333. self.wxBtn.hidden = self.qqBtn.hidden = YES;
  334. self.facebookBtn.hidden = NO;
  335. }
  336. - (void)viewWillAppear:(BOOL)animated {
  337. [super viewWillAppear:animated];
  338. if (self.loginType == BOGO_LOGIN_TYPE_PHONE_CHANGE ||
  339. self.loginType == BOGO_LOGIN_TYPE_PHONE_CONFIRM ||
  340. self.loginType == BOGO_LOGIN_TYPE_FORGET_CODE) {
  341. self.navigationController.navigationBar.hidden = YES;
  342. // self.navBgImgV.hidden = NO;
  343. } else {
  344. self.navigationController.navigationBar.hidden = NO;
  345. // self.navBgImgV.hidden = YES;
  346. }
  347. [self changeThirdView];
  348. }
  349. - (IBAction)clickFacebookBtn:(UIButton *)sender {
  350. // if (self.isSelect == NO) {
  351. // [FanweMessage alertHUD:ASLocalizedString(@"请先阅读并勾选协议")];
  352. // return;
  353. // }
  354. //
  355. // if ([FBSDKAccessToken currentAccessToken]){
  356. // [FanweMessage alertHUD:ASLocalizedString(@"User is logged in")];
  357. // }
  358. // Objective-C // // 将下列代码添加到文件的头文件中,例如:在 ViewController.m 中 // 在 #import "ViewController.h" 之后 #import <FBSDKCoreKit/FBSDKCoreKit.h> #import <FBSDKLoginKit/FBSDKLoginKit.h> // 将下列代码添加到正文:@implementation ViewController - (void)viewDidLoad { [super viewDidLoad];
  359. // FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; // Optional: Place the button in the center of your view.
  360. // loginButton.center = self.view.center;
  361. //
  362. // [self.view addSubview:loginButton];
  363. /*[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_Facebook currentViewController:nil completion:^(id result, NSError *error) {
  364. if (error) {
  365. } else {
  366. UMSocialUserInfoResponse *resp = result;
  367. // 授权信息
  368. NSLog(@"Wechat uid: %@", resp.uid);
  369. NSLog(@"Wechat openid: %@", resp.openid);
  370. NSLog(@"Wechat unionid: %@", resp.unionId);
  371. NSLog(@"Wechat accessToken: %@", resp.accessToken);
  372. NSLog(@"Wechat refreshToken: %@", resp.refreshToken);
  373. NSLog(@"Wechat expiration: %@", resp.expiration);
  374. // 用户信息
  375. NSLog(@"Wechat name: %@", resp.name);
  376. NSLog(@"Wechat iconurl: %@", resp.iconurl);
  377. NSLog(@"Wechat gender: %@", resp.unionGender);
  378. // 第三方平台SDK源数据
  379. NSLog(@"Wechat originalResponse: %@", resp.originalResponse);
  380. [self thirdLoginPlatform:UMSocialPlatformType_Facebook resp:resp];
  381. }
  382. }];*/
  383. // [self getWxLoginUserinfo];
  384. // self.fbManager = [[FBSDKLoginManager alloc] init];
  385. // [self.fbManager logOut];
  386. #warning Facebook登录,暂时注释
  387. // [self.fbManager logInWithPermissions:@[@"public_profile"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult * _Nullable result, NSError * _Nullable error) {
  388. // if (error) {
  389. // NSLog(@"Facebook登陆失败 error:%@",error);
  390. // } else if (result.isCancelled) {
  391. // NSLog(@"Facebook取消登录");
  392. // } else {
  393. // NSLog(@"Facebook登录成功:%@",result.token.userID);
  394. //
  395. // NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  396. // [parmDict setObject:@"login" forKey:@"ctl"];
  397. // [parmDict setObject:result.token.userID forKey:@"openid"];
  398. // [parmDict setObject:@"fb_login" forKey:@"act"];
  399. //
  400. // [parmDict setObject:result.token.tokenString forKey:@"access_token"];
  401. //
  402. //// NSString *loginId = token.userID;
  403. // UMSocialUserInfoResponse *userInfo = [UMSocialUserInfoResponse new];
  404. //// userInfo.name = result.
  405. //
  406. //
  407. //
  408. // FWWeakify(self)
  409. //
  410. // [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  411. // {
  412. // FWStrongify(self)
  413. //
  414. // if ([responseJson toInt:@"status"] == 1)
  415. // {
  416. // UserModel *model = [UserModel modelWithDictionary:responseJson[@"user_info"]];
  417. // model.need_bind_mobile = [responseJson[@"need_bind_mobile"] integerValue];
  418. // model.access_token = result.token.tokenString;
  419. // if (model.need_bind_mobile == 0) {
  420. // [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  421. // [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  422. //
  423. // self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  424. // self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  425. // self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  426. // [GlobalVariables sharedInstance].token = [responseJson toString:@"token"];
  427. // [[BGIMLoginManager sharedInstance] getUserSig:^{
  428. //
  429. // [[AppDelegate sharedAppDelegate] enterMainUI];
  430. //
  431. // [self hideMyHud];
  432. //
  433. // } failed:^(int errId, NSString *errMsg) {
  434. // [self hideMyHud];
  435. //
  436. // }];
  437. // }else{
  438. // [self hideMyHud];
  439. // BogoThirdLoginViewController *vc = [BogoThirdLoginViewController new];
  440. //// vc.userInfo = resp;
  441. // vc.model = model;
  442. // [self.navigationController pushViewController:vc animated:YES];
  443. // }
  444. // }
  445. // else
  446. // {
  447. // [self hideMyHud];
  448. // [FanweMessage alertHUD:[responseJson toString:@"error"]];
  449. // }
  450. //
  451. // } FailureBlock:^(NSError *error)
  452. // {
  453. //
  454. //
  455. // [FanweMessage alertHUD:ASLocalizedString(@"获取登录参数失败,请稍后尝试")];
  456. // }];
  457. //
  458. // }
  459. // }];
  460. }
  461. - (IBAction)clickCancleBtn:(QMUIButton *)sender {
  462. [self.navigationController popViewControllerAnimated:YES];
  463. }
  464. - (IBAction)clickConfirmBtn:(UIButton *)sender {
  465. if (_loginType == BOGO_LOGIN_TYPE_CODE) {
  466. if (self.isSelect == NO) {
  467. [FanweMessage alertHUD:ASLocalizedString(@"请先阅读并勾选协议")];
  468. return;
  469. }
  470. if (self.phoneT.text.length == 0)
  471. {
  472. [FanweMessage alertHUD:ASLocalizedString(@"请输入手机号!")];
  473. return;
  474. }
  475. if (self.phoneT.text.length < 1)
  476. {
  477. [FanweMessage alertHUD:ASLocalizedString(@"手机号限制11位数!")];
  478. return;
  479. }
  480. BogoLoginViewController *vc = [BogoLoginViewController new];
  481. vc.loginType = BOGO_LOGIN_TYPE_CODE_LOGIN;
  482. vc.tel_code = self.areaModel.area_code;
  483. vc.phoneNum = self.phoneT.text;
  484. vc.areaModel = self.areaModel;
  485. [self.navigationController pushViewController:vc animated:YES];
  486. }else if (_loginType == BOGO_LOGIN_TYPE_CODE_LOGIN){
  487. [self phoneCodeLogin];
  488. }else if (_loginType == BOGO_LOGIN_TYPE_PHONE){
  489. if (self.isSelect == NO) {
  490. [FanweMessage alertHUD:ASLocalizedString(@"请先阅读并勾选协议")];
  491. return;
  492. }
  493. _phoneNum = self.phoneT.text;
  494. [self phonePasswordLogin];
  495. }else if (_loginType == BOGO_LOGIN_TYPE_FORGET){
  496. if (self.phoneT.text.length == 0)
  497. {
  498. [FanweMessage alertHUD:ASLocalizedString(@"请输入手机号!")];
  499. return;
  500. }
  501. if (self.phoneT.text.length < 1)
  502. {
  503. [FanweMessage alertHUD:ASLocalizedString(@"手机号限制11位数!")];
  504. return;
  505. }
  506. [self forgetCheckMobilPhone];
  507. }else if (_loginType == BOGO_LOGIN_TYPE_FORGET_CODE){
  508. [self forgetPasswordLogin];
  509. }else if(_loginType == BOGO_LOGIN_TYPE_PHONE_CONFIRM){
  510. [self verificationMobilPhone];
  511. }else if(_loginType == BOGO_LOGIN_TYPE_PHONE_CHANGE){
  512. [self changePhoneNum];
  513. }
  514. }
  515. //验证手机号
  516. -(void)verificationMobilPhone{
  517. FWWeakify(self)
  518. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  519. [parmDict setObject:@"login" forKey:@"ctl"];
  520. [parmDict setObject:@"verification_mobile" forKey:@"act"];
  521. [parmDict setObject:_phoneNum forKey:@"mobile"];
  522. [parmDict setObject:self.phoneT.text forKey:@"code"];
  523. [self showMyHud];
  524. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  525. {
  526. FWStrongify(self)
  527. [self hideMyHud];
  528. if ([responseJson toInt:@"status"] == 1)
  529. {
  530. //验证手机号
  531. BogoLoginViewController *vc = [BogoLoginViewController new];
  532. vc.loginType = BOGO_LOGIN_TYPE_PHONE_CHANGE;
  533. vc.phoneNum = self.phoneT.text;
  534. [self.navigationController pushViewController:vc animated:YES];
  535. }else{
  536. [FanweMessage alertHUD:[responseJson toString:@"error"]];
  537. }
  538. } FailureBlock:^(NSError *error) {
  539. // FWStrongify(self)
  540. [FanweMessage alertHUD:error];
  541. }];
  542. }
  543. - (IBAction)clickGoogleLogin:(id)sender {
  544. if (self.isSelect == NO) {
  545. [FanweMessage alertHUD:ASLocalizedString(@"请先阅读并勾选协议")];
  546. return;
  547. }
  548. /*
  549. [[FIRAuth auth]
  550. addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
  551. NSLog(@"%@ --------- user",user);
  552. }];
  553. GIDConfiguration *config = [[GIDConfiguration alloc] initWithClientID:[FIRApp defaultApp].options.clientID];
  554. __weak __auto_type weakSelf = self;
  555. [GIDSignIn.sharedInstance signInWithConfiguration:config presentingViewController:self callback:^(GIDGoogleUser * _Nullable user, NSError * _Nullable error) {
  556. __auto_type strongSelf = weakSelf;
  557. if (strongSelf == nil) { return; }
  558. FIRUser *currentUser = [FIRAuth auth].currentUser;
  559. if(currentUser == nil)
  560. {
  561. GIDAuthentication *authentication = user.authentication;
  562. // FIRAuthCredential *credential =
  563. // [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
  564. // accessToken:authentication.accessToken];
  565. FWWeakify(self)
  566. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  567. [parmDict setObject:@"login" forKey:@"ctl"];
  568. [parmDict setObject:@"firebase_login" forKey:@"act"];
  569. [parmDict setObject:@"google" forKey:@"login_type"];
  570. [parmDict setObject:user.authentication.refreshToken forKey:@"firebase_token"];
  571. //
  572. [self showMyHud];
  573. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  574. {
  575. FWStrongify(self)
  576. [self hideMyHud];
  577. if ([responseJson toInt:@"status"] == 1)
  578. {
  579. [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  580. [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  581. self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  582. self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  583. self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  584. [GlobalVariables sharedInstance].token = [responseJson toString:@"token"];
  585. [[BGIMLoginManager sharedInstance] getUserSig:^{
  586. [[AppDelegate sharedAppDelegate] enterMainUI];
  587. [self hideMyHud];
  588. } failed:^(int errId, NSString *errMsg) {
  589. [self hideMyHud];
  590. }];
  591. }
  592. else
  593. {
  594. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  595. // 需要延迟执行的代码
  596. [self clickGoogleLogin:nil];
  597. });
  598. }
  599. } FailureBlock:^(NSError *error) {
  600. // FWStrongify(self)
  601. [FanweMessage alertHUD:error.description];
  602. }];
  603. NSLog(@"google login");
  604. return;
  605. }
  606. [currentUser getIDTokenForcingRefresh:YES completion:^(NSString * _Nullable token, NSError * _Nullable error) {
  607. if (error == nil) {
  608. GIDAuthentication *authentication = user.authentication;
  609. // FIRAuthCredential *credential =
  610. // [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
  611. // accessToken:authentication.accessToken];
  612. FWWeakify(self)
  613. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  614. [parmDict setObject:@"login" forKey:@"ctl"];
  615. [parmDict setObject:@"firebase_login" forKey:@"act"];
  616. [parmDict setObject:@"google" forKey:@"login_type"];
  617. [parmDict setObject:token forKey:@"firebase_token"];
  618. //
  619. [self showMyHud];
  620. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  621. {
  622. FWStrongify(self)
  623. [self hideMyHud];
  624. if ([responseJson toInt:@"status"] == 1)
  625. {
  626. [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  627. [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  628. self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  629. self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  630. self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  631. [GlobalVariables sharedInstance].token = [responseJson toString:@"token"];
  632. [[BGIMLoginManager sharedInstance] getUserSig:^{
  633. [[AppDelegate sharedAppDelegate] enterMainUI];
  634. [self hideMyHud];
  635. } failed:^(int errId, NSString *errMsg) {
  636. [self hideMyHud];
  637. }];
  638. }
  639. else
  640. {
  641. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  642. // 需要延迟执行的代码
  643. [self clickGoogleLogin:nil];
  644. });
  645. }
  646. } FailureBlock:^(NSError *error) {
  647. // FWStrongify(self)
  648. [FanweMessage alertHUD:error.description];
  649. }];
  650. NSLog(@"google login");
  651. // ...
  652. } else {
  653. // ...
  654. }
  655. }];
  656. // [currentUser getIDTokenForcingRefresh:^(NSString * _Nullable token, NSError * _Nullable error) {
  657. //
  658. // }];
  659. }];*/
  660. }
  661. //忘记密码-之前的下一步界面
  662. -(void)forgetCheckMobilPhone{
  663. FWWeakify(self)
  664. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  665. [parmDict setObject:@"login" forKey:@"ctl"];
  666. [parmDict setObject:@"check_mobile" forKey:@"act"];
  667. [parmDict setObject:self.phoneT.text forKey:@"mobile"];
  668. [parmDict setObject:self.areaModel.area_code forKey:@"tel_code"];
  669. [self showMyHud];
  670. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  671. {
  672. FWStrongify(self)
  673. [self hideMyHud];
  674. if ([responseJson toInt:@"status"] == 1)
  675. {
  676. //验证手机号
  677. BogoLoginViewController *vc = [BogoLoginViewController new];
  678. vc.loginType = BOGO_LOGIN_TYPE_FORGET_CODE;
  679. vc.phoneNum = self.phoneT.text;
  680. vc.tel_code = self.areaModel.area_code;
  681. [self.navigationController pushViewController:vc animated:YES];
  682. }else{
  683. [FanweMessage alertHUD:[responseJson toString:@"error"]];
  684. }
  685. } FailureBlock:^(NSError *error) {
  686. // FWStrongify(self)
  687. [FanweMessage alertHUD:error];
  688. }];
  689. }
  690. - (IBAction)clickAreaPhoneBtn:(QMUIButton *)sender {
  691. // BogoCountryChoiceViewController *vc = [BogoCountryChoiceViewController new];
  692. if (@available(iOS 15.0, *)) {
  693. UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
  694. appearance.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleRegular];
  695. appearance.backgroundColor = kWhiteColor;
  696. self.navigationController.navigationBar.scrollEdgeAppearance = appearance;
  697. }
  698. XYCountryCodeViewController *vc = [[XYCountryCodeViewController alloc] initWithShowType:XYCountryCodeShowTypeNone];
  699. [vc showViewController:self];
  700. __weak __typeof(self)weakSelf = self;
  701. [vc setChooseCodeRespose:^(NSString *code) {
  702. BogoChoiceAreaModel *model = [BogoChoiceAreaModel new];
  703. model.area_code = [NSString stringWithFormat:@"+%@",code];
  704. self.areaModel = model;
  705. [sender setTitle:[NSString stringWithFormat:@"+%@",code] forState:UIControlStateNormal];
  706. // weakSelf.labCountryCode.text = [NSString stringWithFormat:@"+%@",code];
  707. // weakSelf.countryCode = code;
  708. }];
  709. // vc.clickAreaBlock = ^(BogoChoiceAreaModel * _Nonnull model) {
  710. // [sender setTitle:model.area_code forState:UIControlStateNormal];
  711. // self.areaModel = model;
  712. // };
  713. // [self.navigationController pushViewController:vc animated:YES];
  714. }
  715. - (IBAction)clickForgetBtn:(UIButton *)sender {
  716. BogoLoginViewController *vc = [BogoLoginViewController new];
  717. vc.loginType = BOGO_LOGIN_TYPE_FORGET;
  718. [self.navigationController pushViewController:vc animated:YES];
  719. }
  720. - (IBAction)clickPasswordLoginBtn:(UIButton *)sender {
  721. BogoLoginViewController *vc = [BogoLoginViewController new];
  722. if (_loginType == BOGO_LOGIN_TYPE_PHONE) {
  723. if (self.returnPhoneNumBlock) {
  724. self.returnPhoneNumBlock(self.phoneT.text);
  725. }
  726. [self.navigationController popViewControllerAnimated:YES];
  727. return;
  728. }else{
  729. vc.loginType = BOGO_LOGIN_TYPE_PHONE;
  730. vc.phoneNum = self.phoneT.text;
  731. vc.returnPhoneNumBlock = ^(NSString * _Nonnull phone) {
  732. self.phoneT.text = phone;
  733. };
  734. }
  735. [self.navigationController pushViewController:vc animated:YES];
  736. }
  737. - (IBAction)clickSelectBtn:(UIButton *)sender {
  738. self.isSelect = !self.isSelect;
  739. if (self.isSelect) {
  740. [self.selectBtn setImage:[UIImage imageNamed:@"bogo_regiset_select"] forState:UIControlStateNormal];
  741. }else{
  742. [self.selectBtn setImage:[UIImage imageNamed:@"bogo_regiset_normal"] forState:UIControlStateNormal];
  743. }
  744. }
  745. - (IBAction)clickWxBtn:(UIButton *)sender {
  746. if (self.isSelect == NO) {
  747. [FanweMessage alertHUD:ASLocalizedString(@"请先阅读并勾选协议")];
  748. return;
  749. }
  750. [self getWxLoginUserinfo];
  751. }
  752. - (IBAction)clickQQBtn:(UIButton *)sender {
  753. if (self.isSelect == NO) {
  754. [FanweMessage alertHUD:ASLocalizedString(@"请先阅读并勾选协议")];
  755. return;
  756. }
  757. [[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_QQ currentViewController:nil completion:^(id result, NSError *error) {
  758. if (error) {
  759. } else {
  760. UMSocialUserInfoResponse *resp = result;
  761. [self thirdLoginPlatform:UMSocialPlatformType_QQ resp:resp];
  762. }
  763. }];
  764. }
  765. -(void)getWxLoginUserinfo{
  766. [[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_WechatSession currentViewController:nil completion:^(id result, NSError *error) {
  767. if (error) {
  768. } else {
  769. UMSocialUserInfoResponse *resp = result;
  770. // 授权信息
  771. NSLog(@"Wechat uid: %@", resp.uid);
  772. NSLog(@"Wechat openid: %@", resp.openid);
  773. NSLog(@"Wechat unionid: %@", resp.unionId);
  774. NSLog(@"Wechat accessToken: %@", resp.accessToken);
  775. NSLog(@"Wechat refreshToken: %@", resp.refreshToken);
  776. NSLog(@"Wechat expiration: %@", resp.expiration);
  777. // 用户信息
  778. NSLog(@"Wechat name: %@", resp.name);
  779. NSLog(@"Wechat iconurl: %@", resp.iconurl);
  780. NSLog(@"Wechat gender: %@", resp.unionGender);
  781. // 第三方平台SDK源数据
  782. NSLog(@"Wechat originalResponse: %@", resp.originalResponse);
  783. [self thirdLoginPlatform:UMSocialPlatformType_WechatSession resp:resp];
  784. }
  785. }];
  786. }
  787. -(void)thirdLoginPlatform:(UMSocialPlatformType)platformType resp:(UMSocialUserInfoResponse *)resp{
  788. NSString *loginId = @"";
  789. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  790. [parmDict setObject:@"login" forKey:@"ctl"];
  791. if (platformType == UMSocialPlatformType_QQ)
  792. {
  793. [parmDict setObject:@"qq_login" forKey:@"act"];
  794. [parmDict setObject:resp.openid forKey:@"openid"];
  795. [parmDict setObject:resp.accessToken forKey:@"access_token"];
  796. // self.loginType = @"qq_login";
  797. loginId = resp.openid;
  798. }
  799. else if (platformType == UMSocialPlatformType_WechatSession)
  800. {
  801. [parmDict setObject:@"wx_login" forKey:@"act"];
  802. [parmDict setObject:resp.openid forKey:@"openid"];
  803. [parmDict setObject:resp.accessToken forKey:@"access_token"];
  804. loginId = resp.openid;
  805. }
  806. [self showMyHud];
  807. FWWeakify(self)
  808. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  809. {
  810. FWStrongify(self)
  811. if ([responseJson toInt:@"status"] == 1)
  812. {
  813. UserModel *model = [UserModel modelWithDictionary:responseJson[@"user_info"]];
  814. model.need_bind_mobile = [responseJson[@"need_bind_mobile"] integerValue];
  815. model.access_token = resp.accessToken;
  816. if (model.need_bind_mobile == 0) {
  817. [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  818. [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  819. self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  820. self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  821. self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  822. [GlobalVariables sharedInstance].token = [responseJson toString:@"token"];
  823. [[BGIMLoginManager sharedInstance] getUserSig:^{
  824. [[AppDelegate sharedAppDelegate] enterMainUI];
  825. [self hideMyHud];
  826. } failed:^(int errId, NSString *errMsg) {
  827. [self hideMyHud];
  828. }];
  829. }else{
  830. [self hideMyHud];
  831. BogoThirdLoginViewController *vc = [BogoThirdLoginViewController new];
  832. vc.userInfo = resp;
  833. vc.model = model;
  834. [self.navigationController pushViewController:vc animated:YES];
  835. }
  836. }
  837. else
  838. {
  839. [self hideMyHud];
  840. [FanweMessage alertHUD:[responseJson toString:@"error"]];
  841. }
  842. } FailureBlock:^(NSError *error)
  843. {
  844. [self hideMyHud];
  845. [FanweMessage alertHUD:ASLocalizedString(@"获取登录参数失败,请稍后尝试")];
  846. }];
  847. }
  848. -(void)firbaseApiRequest:(NSString *)token
  849. {
  850. FWWeakify(self)
  851. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  852. [parmDict setObject:@"login" forKey:@"ctl"];
  853. [parmDict setObject:@"firebase_login" forKey:@"act"];
  854. [parmDict setObject:_phoneNum forKey:@"mobile"];
  855. [parmDict setObject:self.phoneT.text forKey:@"verify_coder"];
  856. [parmDict setObject:self.areaModel.area_code forKey:@"tel_code"];
  857. [parmDict setObject:@"phone" forKey:@"login_type"];
  858. [parmDict setObject:token forKey:@"firebase_token"];
  859. //
  860. [self showMyHud];
  861. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  862. {
  863. FWStrongify(self)
  864. [self hideMyHud];
  865. if ([responseJson toInt:@"status"] == 1)
  866. {
  867. [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  868. [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  869. self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  870. self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  871. self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  872. [GlobalVariables sharedInstance].token = [responseJson toString:@"token"];
  873. [[BGIMLoginManager sharedInstance] getUserSig:^{
  874. [[AppDelegate sharedAppDelegate] enterMainUI];
  875. [self hideMyHud];
  876. } failed:^(int errId, NSString *errMsg) {
  877. [self hideMyHud];
  878. }];
  879. }
  880. else
  881. {
  882. self.tryCount++;
  883. if(self.tryCount < 20)
  884. {
  885. [self firbaseApiRequest:token];
  886. NSLog(@"自动重试");
  887. }
  888. else
  889. {
  890. NSLog(@"超过20次");
  891. }
  892. }
  893. } FailureBlock:^(NSError *error) {
  894. [self firbaseApiRequest:token];
  895. // FWStrongify(self)
  896. // [FanweMessage alertHUD:error.description];
  897. }];
  898. }
  899. //验证码登录
  900. -(void)phoneCodeLogin{
  901. if (!StrValid(self.phoneT.text)) {
  902. [FanweMessage alertHUD:ASLocalizedString(@"请填写验证码")];
  903. return;
  904. }
  905. if([GlobalVariables sharedInstance].openFirebaseSMS && self.areaModel.area_code.intValue != 86)
  906. {
  907. [[BGFirebaseSMS new] verifyCode:self.phoneT.text block:^(AppBlockModel *blockModel) {
  908. NSString *token = blockModel.retDict[@"token"];
  909. self.tryCount = 0;
  910. [self firbaseApiRequest:token];
  911. }];
  912. return;
  913. }
  914. FWWeakify(self)
  915. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  916. [parmDict setObject:@"login" forKey:@"ctl"];
  917. [parmDict setObject:@"do_login_new" forKey:@"act"];
  918. [parmDict setObject:_phoneNum forKey:@"mobile"];
  919. [parmDict setObject:self.phoneT.text forKey:@"verify_coder"];
  920. [parmDict setObject:self.areaModel.area_code forKey:@"tel_code"];
  921. [parmDict setObject:SafeStr([GlobalVariables sharedInstance].otp_message_id) forKey:@"otp_message_id"];
  922. //
  923. [self showMyHud];
  924. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  925. {
  926. FWStrongify(self)
  927. [self hideMyHud];
  928. if ([responseJson toInt:@"status"] == 1)
  929. {
  930. [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  931. [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  932. self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  933. self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  934. self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  935. [GlobalVariables sharedInstance].token = [responseJson toString:@"token"];
  936. [[BGIMLoginManager sharedInstance] getUserSig:^{
  937. [[AppDelegate sharedAppDelegate] enterMainUI];
  938. [self hideMyHud];
  939. } failed:^(int errId, NSString *errMsg) {
  940. [self hideMyHud];
  941. }];
  942. }
  943. } FailureBlock:^(NSError *error) {
  944. // FWStrongify(self)
  945. [FanweMessage alertHUD:error.description];
  946. }];
  947. }
  948. //账号密码登录
  949. -(void)phonePasswordLogin{
  950. if (_phoneNum.length == 0)
  951. {
  952. [FanweMessage alertHUD:ASLocalizedString(@"请输入手机号!")];
  953. return;
  954. }
  955. if (_phoneNum.length < 1)
  956. {
  957. [FanweMessage alertHUD:ASLocalizedString(@"手机号限制11位数!")];
  958. return;
  959. }
  960. FWWeakify(self)
  961. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  962. [parmDict setObject:@"login" forKey:@"ctl"];
  963. [parmDict setObject:@"password_login_new" forKey:@"act"];
  964. // [parmDict setObject:@"1" forKey:@"wx_binding"];
  965. [parmDict setObject:self.phoneT.text forKey:@"mobile"];
  966. [parmDict setObject:self.passwordT.text forKey:@"password"];
  967. [parmDict setObject:self.areaModel.area_code forKey:@"tel_code"];
  968. //
  969. [self showMyHud];
  970. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  971. {
  972. FWStrongify(self)
  973. [self hideMyHud];
  974. if ([responseJson toInt:@"status"] == 1)
  975. {
  976. [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  977. [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  978. self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  979. self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  980. self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  981. NSDictionary *userDic = [responseJson valueForKey:@"user_info"];
  982. [GlobalVariables sharedInstance].token = [userDic toString:@"token"];
  983. [[BGIMLoginManager sharedInstance] getUserSig:^{
  984. [[AppDelegate sharedAppDelegate] enterMainUI];
  985. [self hideMyHud];
  986. } failed:^(int errId, NSString *errMsg) {
  987. [self hideMyHud];
  988. }];
  989. }else{
  990. [FanweMessage alertHUD:[responseJson toString:@"error"]];
  991. }
  992. } FailureBlock:^(NSError *error) {
  993. [FanweMessage alertHUD:error.description];
  994. }];
  995. }
  996. //忘记密码登录
  997. -(void)forgetPasswordLogin{
  998. //这里验证码用_phoneT
  999. if (_phoneT.text.length == 0)
  1000. {
  1001. [FanweMessage alertHUD:ASLocalizedString(@"请输入验证码!")];
  1002. return;
  1003. }
  1004. FWWeakify(self)
  1005. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  1006. [parmDict setObject:@"login" forKey:@"ctl"];
  1007. [parmDict setObject:@"update_password_new" forKey:@"act"];
  1008. // [parmDict setObject:@"1" forKey:@"wx_binding"];
  1009. [parmDict setObject:_phoneNum forKey:@"mobile"];
  1010. [parmDict setObject:self.phoneT.text forKey:@"verify_coder"];
  1011. [parmDict setObject:self.passwordT.text forKey:@"password"];
  1012. [parmDict setObject:self.confirmPasswordT.text forKey:@"confirm_password"];
  1013. [parmDict setObject:self.areaModel.area_code forKey:@"tel_code"];
  1014. [self showMyHud];
  1015. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  1016. {
  1017. FWStrongify(self)
  1018. [self hideMyHud];
  1019. if ([responseJson toInt:@"status"] == 1)
  1020. {
  1021. // [BGIMLoginManager sharedInstance].loginParam.identifier = [responseJson toString:@"user_id"];
  1022. // [BGIMLoginManager sharedInstance].loginParam.isAgree = [responseJson toInt:@"is_agree"];
  1023. //
  1024. // self.BuguLive.appModel.first_login = [responseJson toString:@"first_login"];
  1025. // self.BuguLive.appModel.new_level = [responseJson toInt:@"new_level"];
  1026. // self.BuguLive.appModel.login_send_score = [responseJson toString:@"login_send_score"];
  1027. // [GlobalVariables sharedInstance].token = [responseJson toString:@"token"];
  1028. //
  1029. [self.navigationController popToRootViewControllerAnimated:YES];
  1030. }
  1031. [FanweMessage alertHUD:[responseJson toString:@"error"]];
  1032. } FailureBlock:^(NSError *error) {
  1033. // FWStrongify(self)
  1034. [FanweMessage alertHUD:error.description];
  1035. }];
  1036. }
  1037. //更换新的手机号
  1038. -(void)changePhoneNum{
  1039. if (self.codePhoneT.text.length == 0)
  1040. {
  1041. [FanweMessage alertHUD:ASLocalizedString(@"请输入手机号!")];
  1042. return;
  1043. }
  1044. if (self.codePhoneT.text.length < 1)
  1045. {
  1046. [FanweMessage alertHUD:ASLocalizedString(@"手机号限制11位数!")];
  1047. return;
  1048. }
  1049. FWWeakify(self)
  1050. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  1051. [parmDict setObject:@"login" forKey:@"ctl"];
  1052. [parmDict setObject:@"exchange_mobile" forKey:@"act"];
  1053. [parmDict setObject:self.codePhoneT.text forKey:@"mobile"];
  1054. [parmDict setObject:self.phoneT.text forKey:@"code"];
  1055. [parmDict setObject:self.areaModel.area_code forKey:@"tel_code"];
  1056. [self showMyHud];
  1057. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  1058. {
  1059. FWStrongify(self)
  1060. [self hideMyHud];
  1061. if ([responseJson toInt:@"status"] == 1)
  1062. {
  1063. [self.navigationController popViewControllerAnimated:YES];
  1064. }
  1065. [FanweMessage alertHUD:[responseJson toString:@"error"]];
  1066. } FailureBlock:^(NSError *error) {
  1067. // FWStrongify(self)
  1068. [FanweMessage alertHUD:error];
  1069. }];
  1070. }
  1071. - (IBAction)getConfirmCodeBtn:(QMUIButton *)codeBtn {
  1072. if (_phoneNum.length == 0)
  1073. {
  1074. [FanweMessage alertHUD:ASLocalizedString(@"请输入手机号!")];
  1075. return;
  1076. }
  1077. if (_phoneNum.length < 1)
  1078. {
  1079. [FanweMessage alertHUD:ASLocalizedString(@"手机号限制11位数!")];
  1080. return;
  1081. }
  1082. codeBtn.enabled = NO;
  1083. _timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timego) userInfo:nil repeats:YES];
  1084. [self timego];
  1085. //google sms
  1086. if([GlobalVariables sharedInstance].openFirebaseSMS && self.areaModel.area_code.intValue != 86)
  1087. {
  1088. NSString *phoneSMS = [NSString stringWithFormat:@"+%@%@",self.areaModel.area_code,_phoneNum];
  1089. [[[BGFirebaseSMS alloc] init] sendSMS:phoneSMS block:^(AppBlockModel *blockModel) {
  1090. }];
  1091. return;
  1092. }
  1093. FWWeakify(self)
  1094. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  1095. [parmDict setObject:@"login" forKey:@"ctl"];
  1096. [parmDict setObject:@"send_mobile_verify_international" forKey:@"act"];
  1097. // [parmDict setObject:@"1" forKey:@"wx_binding"];
  1098. [parmDict setObject:_phoneNum forKey:@"mobile"];
  1099. [parmDict setObject:[NSString stringWithFormat:@"%@",self.areaModel.area_code] forKey:@"area_code"];
  1100. [self showMyHud];
  1101. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  1102. {
  1103. FWStrongify(self)
  1104. [self hideMyHud];
  1105. [GlobalVariables sharedInstance].otp_message_id = [NSString stringWithFormat:@"%@",[responseJson toString:@"otp_message_id"]];
  1106. if ([responseJson toInt:@"status"] != 1)
  1107. {
  1108. NSLog(@"otp_message_id = %@",[responseJson toString:@"otp_message_id"]);
  1109. codeBtn.enabled = YES;
  1110. [codeBtn setTitle:ASLocalizedString(@"发送验证码") forState:UIControlStateNormal];
  1111. [_timer invalidate];
  1112. _timer = nil;
  1113. }else{
  1114. }
  1115. } FailureBlock:^(NSError *error) {
  1116. FWStrongify(self)
  1117. [self hideMyHud];
  1118. [codeBtn setTitle:ASLocalizedString(@"发送验证码") forState:UIControlStateNormal];
  1119. [FanweMessage alert:ASLocalizedString(@"发送失败")];
  1120. codeBtn.enabled = YES;
  1121. }];
  1122. }
  1123. #pragma mark 获取验证码的倒计时
  1124. - (void)timego
  1125. {
  1126. [self timerDec:_timeCount];
  1127. }
  1128. - (void)timerDec:(NSInteger)time
  1129. {
  1130. if(time > 0)
  1131. {
  1132. [self.codeBtn setTitle:[NSString stringWithFormat:@"%@(%lds)",ASLocalizedString(@"重新获取"),(long)time] forState:UIControlStateNormal];
  1133. // [self.loginView.codeBtn setTitleColor:kAppGrayColor1 forState:UIControlStateDisabled];
  1134. _timeCount --;
  1135. }else if(time == 0)
  1136. {
  1137. self.codeBtn.enabled = YES;
  1138. [self.codeBtn setTitle:[NSString stringWithFormat:ASLocalizedString(@"重新获取验证码")] forState:UIControlStateNormal];
  1139. [_timer invalidate];
  1140. _timeCount = 60;
  1141. }
  1142. }
  1143. -(void)setPlaceholderTextWithTextfield:(UITextField *)textField{
  1144. if (@available(iOS 13.0,*)) {
  1145. // Ivar ivar = class_getInstanceVariable([UITextField class],@"_placeholderLabel");
  1146. UILabel *placeholderLabel = [self getIvar:textField ivarName:@"_placeholderLabel"];
  1147. // object_getIvar(textField, ivar);
  1148. placeholderLabel.textColor = [UIColor colorWithHexString:@"#AAAAAA"];
  1149. placeholderLabel.font = [UIFont boldSystemFontOfSize:14];
  1150. placeholderLabel.alpha = 0.8;
  1151. }else{
  1152. [textField setValue:[UIColor colorWithHexString:@"#AAAAAA"] forKeyPath:@"_placeholderLabel.textColor"];
  1153. [textField setValue:[UIFont systemFontOfSize:14]forKeyPath:@"_placeholderLabel.font"];
  1154. }
  1155. }
  1156. - (id)getIvar:(id)obj ivarName:(NSString *)name {
  1157. unsigned int numIvars; // 成员变量个数
  1158. Ivar *vars = class_copyIvarList([obj class], &numIvars);
  1159. id resultObj;
  1160. for(int i =0; i < numIvars; i++) {
  1161. if ([[NSString stringWithUTF8String:ivar_getName(vars[i])] isEqualToString:name]) {
  1162. ptrdiff_t offset = ivar_getOffset(vars[i]);
  1163. // 核心代码就只有下面这一句,类似的其他类的其他变量,你懂的...
  1164. resultObj = (__bridge id)((void *)(*((long *)((__bridge void *)obj + offset))));
  1165. break;
  1166. }
  1167. }
  1168. free(vars);
  1169. return resultObj;
  1170. }
  1171. //我已阅读并同意《用户服务协议》、《隐私权政策》
  1172. -(void)setAgreeTextView{
  1173. [self.agreeT setText:ASLocalizedString(@"已阅读并同意《用户服务协议》和《隐私政策》")];
  1174. NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:ASLocalizedString(self.agreeT.text)];
  1175. //设置行间距以及字体大小、颜色
  1176. NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
  1177. paragraphStyle.lineSpacing = 4;// 字体的行间距
  1178. NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:12.0],
  1179. NSForegroundColorAttributeName:[UIColor colorWithHexString:@"#333333"],
  1180. NSParagraphStyleAttributeName:paragraphStyle};
  1181. [attributedString setAttributes:attributes range:NSMakeRange(0, attributedString.length)];
  1182. [attributedString addAttribute:NSLinkAttributeName
  1183. value:@"action1://"
  1184. range:[[attributedString string] rangeOfString:ASLocalizedString(@"《用户服务协议》")]];
  1185. [attributedString addAttribute:NSLinkAttributeName
  1186. value:@"action2://"
  1187. range:[[attributedString string] rangeOfString:ASLocalizedString(@"《隐私政策》")]];
  1188. NSDictionary *linkAttributes = @{NSForegroundColorAttributeName:[UIColor colorWithHexString:@"#9152F8"]};
  1189. self.agreeT.backgroundColor = [UIColor clearColor];
  1190. self.agreeT.linkTextAttributes = linkAttributes;
  1191. self.agreeT.attributedText = attributedString;
  1192. self.agreeT.scrollEnabled = NO;
  1193. self.agreeT.font = [UIFont systemFontOfSize:12.0];
  1194. self.agreeT.textAlignment = NSTextAlignmentCenter;
  1195. self.agreeT.editable = NO;
  1196. self.agreeT.delegate = self;
  1197. // [self.view addSubview:self.agreeT];
  1198. }
  1199. #pragma mark -
  1200. - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
  1201. {
  1202. BGMainWebViewController *tmpController = [BGMainWebViewController webControlerWithUrlStr:self.BuguLive.appModel.privacy_link isShowIndicator:YES isShowNavBar:YES isShowBackBtn:YES];
  1203. [[AppDelegate sharedAppDelegate] pushViewController:tmpController animated:YES];
  1204. tmpController.navigationController.navigationBar.hidden = NO;
  1205. return YES;
  1206. }
  1207. @end