iOS獨立開發者使用Bmob第三方後臺服務之用戶管理

1、屬性

BmobUser除了從BmobObject繼承的屬性外,還有幾個特定的屬性:git

  • username: 用戶的用戶名(必需)。
  • password: 用戶的密碼(必需)。
  • email: 用戶的電子郵件地址(可選)。

BmobUser自動處理用戶帳戶管理所需的功能。github

-(void)setUsername:(NSString *)username;//用戶名,必需
-(void)setPassword:(NSString*)password;//密碼,必需
-(void)setEmail:(NSString *)email;//設置郵箱
-(void)setObject:(id)obj forKey:(id)key;//設置某個屬性的值
-(id)objectForKey:(id)key;//獲得某個屬性的值
複製代碼

2、註冊

應用很常見的一個功能就是,註冊用戶,使用BmobUser註冊用戶也不復雜,以下的例子所示:後端

BmobUser *bUser = [[BmobUser alloc] init];
    [bUser setUsername:self.nameTextField.text];
    [bUser setPassword:self.passwordTextField.text];
    [bUser signUpInBackgroundWithBlock:^ (BOOL isSuccessful, NSError *error){
        if (isSuccessful){
            NSLog(@"Sign up successfully");
            NSString *result = [NSString stringWithFormat:@"註冊成功\n用戶名:%@\n密碼:%@\n去試試登陸吧",self.nameTextField.text,self.passwordTextField.text];
            [self showResultInfo:result];
        } else {
            NSLog(@"%@",error);
            [self showResultInfo:@"註冊失敗,查看控制檯信息"];

        }
    }];
複製代碼

注意點緩存

  • 有些時候你可能須要在用戶註冊時發送一封郵件,以確認用戶郵箱的真實性。這時,你只須要登陸本身的應用管理後臺,在應用設置->郵件設置(下圖)中把「郵箱驗證」功能打開,Bmob雲後端就會在用戶註冊時自動發動一封驗證給用戶。 安全

  • username字段是大小寫敏感的字段,若是你但願應用的用戶名不區分大小寫,請在註冊和登陸時進行大小寫的統一轉換。spa

3、登陸

當用戶註冊成功後,須要讓他們之後可以登陸到他們的帳戶使用應用。要作到這點可使用 方法一code

[BmobUser loginWithUsernameInBackground:self.nameTextField.text password:self.passwordTextField.text];

複製代碼

方法二orm

[BmobUser loginWithUsernameInBackground:self.nameTextField.text password:self.passwordTextField.text block:^(BmobUser *user, NSError *error) {
        if (user) {
            NSString *result = [NSString stringWithFormat:@"登陸成功\n用戶名:%@\n密碼:%@\n去試試獲取當前用戶吧",user.username,user.password];
                        [self showResultInfo:result];
        }else{
            NSLog(@"%@",error);
              [self showResultInfo:@"登陸失敗,查看可控制檯消息"];
        }
    }];
複製代碼

能夠看到Bmob裏面提供了不少的方法,根據須要調用cdn

4、獲取當前用戶

每次你登陸成功,都會在本地磁盤中有一個緩存的用戶對象做爲當前用戶,能夠獲取這個緩存的用戶對象來進行登陸:對象

BmobUser *user = [BmobUser currentUser];
    if (user) {
        //進行操做
        NSString *result = [NSString stringWithFormat:@"登陸成功\n用戶名:%@\n密碼:%@\n去試試更新用戶吧",user.username,user.password];
        [self showResultInfo:result];
    }else{
        //對象爲空時,可打開用戶註冊界面
        [self showResultInfo:@"當前沒有用戶"];
    }
複製代碼

固然,你也能夠用以下的方法清除緩存用戶對象:

[BmobUser logout];
複製代碼

5、更新用戶

當用戶登陸成功後,在本地有個緩存的用戶對象,若是開發者但願更改當前用戶的某個屬性可按以下代碼操做:

BmobUser *bUser = [BmobUser currentUser];
    
    if (bUser) {
        [bUser setObject:self.nameTextField.text forKey:@"username"];
        [bUser updateInBackgroundWithResultBlock:^(BOOL isSuccessful, NSError *error) {
            if (isSuccessful) {
                [self showResultInfo:@"更新用戶成功,去查看當前用戶信息吧"];
            }else{
                NSLog(@"error %@",[error description]);
                [self showResultInfo:@"更新用戶失敗,控制檯查看信息"];
            }
        }];
    }else{
         [self showResultInfo:@"當前未登陸"];
    }
複製代碼

通常來講,使用當前用戶對象來進行資料更新可能會遇到一個問題。若是當前用戶上次登陸的時間距離當前時間過長,存放在本地的Token就有可能會過時,致使用戶更新資料失敗,這是須要從新登陸,登陸成功後才能更新資料。

在更新用戶信息時,若是用戶郵箱有變動而且在管理後臺打開了郵箱驗證選項的話,Bmob雲後端一樣會自動發動一封郵件驗證信息給用戶。

6、查詢用戶

查詢用戶和查詢普通對象同樣,只需指定BmobUser類便可,以下:

BmobQuery *query = [BmobUser query];
    [query whereKey:@"username" equalTo:self.nameTextField.text];
    [query findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error) {
        if (error) {
            NSLog(@"%@",error);
            [self showResultInfo:@"查詢出錯,查看控制檯信息"];

            
        }else{
            if (array.count>0) {
                for (BmobUser *user in array) { //  demo中只有一個用戶,因此把顯示結果的放在循環內了
                    NSLog(@"objectid %@",user.objectId);
                    NSString *result = [NSString stringWithFormat:@"查詢成功\n用戶名:%@\n用戶id:%@",user.username,user.objectId];
                    [self showResultInfo:result];
                    
                }
            }else{
                 [self showResultInfo:@"沒有查詢到結果,請修改信息後查詢"];
            }
            
        }
       
    }];
複製代碼

在Bmob後臺查看用戶表

7、修改密碼

使用舊密碼來重置新密碼的接口,示例以下: 修改

BmobUser *user = [BmobUser currentUser];
    [user updateCurrentUserPasswordWithOldPassword:self.nameTextField.text newPassword:self.passwordTextField.text block:^(BOOL isSuccessful, NSError *error) {
        if (isSuccessful) {
               [self showResultWithLoginInfo:user.username];
          
        } else {
            NSLog(@"change password error:%@",error);
             [self showResultInfo:@"修改失敗,查看可控制檯消息"];
        }
    }];
複製代碼

修改爲功以後登陸

//用新密碼登陸
        [BmobUser loginInbackgroundWithAccount:result andPassword:self.passwordTextField.text block:^(BmobUser *user, NSError *error) {
            if (error) {
                NSLog(@"login error:%@",error);
                [self showResultInfo:@"登陸失敗,查看可控制檯消息"];
                
            } else {
                
                
                NSLog(@"user:%@",user);
                NSString *result = [NSString stringWithFormat:@"登陸成功\n用戶名:%@\n用戶ID:%@\n",user.username,user.objectId];
                [self showResultInfo:result];
            }
        }];
複製代碼

8、郵箱找回(修改)密碼

前提是在註冊操做的時候有添加過郵箱

一旦你引入了一個密碼系統,那麼確定會有用戶忘記密碼的狀況。對於這種狀況,咱們提供了一種方法,讓用戶安全地重置起密碼。

重置密碼的流程很簡單,開發者只須要求用戶輸入註冊的電子郵件地址便可

[BmobUser requestPasswordResetInBackgroundWithEmail:self.nameTextField.text block:^(BOOL isSuccessful, NSError *error) {
        if (isSuccessful) {
            [self showResultInfo:@"發送成功,請去郵箱內查看郵件"];
        }else{
            NSLog(@"%@",error);
            [self showResultInfo:@"發送失敗,請查看控制檯信息"];
        }
        
    }];
複製代碼

如下爲未開啓郵箱驗證和註冊時未綁定郵箱的

密碼重置流程以下:

  1. 用戶輸入他們的電子郵件,請求重置本身的密碼。
  2. Bmob向他們的郵箱發送一封包含特殊的密碼重置鏈接的電子郵件。
  3. 用戶根據嚮導點擊重置密碼鏈接,打開一個特殊的Bmob頁面,根據提示,他們能夠輸入一個新的密碼。
  4. 用戶的密碼已被重置爲新輸入的密碼。

9、總結

注意點:

  1. 須要在Bmob後臺開啓郵箱認證
  2. Bmob後臺User表裏可添加字段來完善用戶信息
  3. 經過郵箱操做密碼等信息的須要在註冊是要求用戶驗證郵箱,不然操做失敗

Bmob接入具體操做可查看上一篇文章 iOS獨立開發者使用Bmob第三方後臺服務初探 本文同步至我的博客 代碼傳送門,歡迎star,感興趣的能夠留言一塊兒探討。 搜索公衆號JacerooChu或掃描下方二維碼一塊兒討論和獲取更多信息。

swap.png
相關文章
相關標籤/搜索