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

JackerooChu發表於2018-11-15

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

一、屬性

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

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

BmobUser自動處理使用者賬戶管理所需的功能。

-(void)setUsername:(NSString *)username;//使用者名稱,必需
-(void)setPassword:(NSString*)password;//密碼,必需
-(void)setEmail:(NSString *)email;//設定郵箱
-(void)setObject:(id)obj forKey:(id)key;//設定某個屬性的值
-(id)objectForKey:(id)key;//得到某個屬性的值
複製程式碼

二、註冊

應用很常見的一個功能就是,註冊使用者,使用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:@"註冊失敗,檢視控制檯資訊"];

        }
    }];
複製程式碼

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

注意點

  • 有些時候你可能需要在使用者註冊時傳送一封郵件,以確認使用者郵箱的真實性。這時,你只需要登入自己的應用管理後臺,在應用設定->郵件設定(下圖)中把“郵箱驗證”功能開啟,Bmob雲後端就會在使用者註冊時自動發動一封驗證給使用者。

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

  • username欄位是大小寫敏感的欄位,如果你希望應用的使用者名稱不區分大小寫,請在註冊和登入時進行大小寫的統一轉換。

三、登入

當使用者註冊成功後,需要讓他們以後能夠登入到他們的賬戶使用應用。要做到這點可以使用 方法一


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

複製程式碼

方法二

    [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裡面提供了很多的方法,根據需要呼叫

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

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

四、獲取當前使用者

每次你登入成功,都會在本地磁碟中有一個快取的使用者物件作為當前使用者,可以獲取這個快取的使用者物件來進行登入:

 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];
複製程式碼

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

五、更新使用者

當使用者登入成功後,在本地有個快取的使用者物件,如果開發者希望更改當前使用者的某個屬性可按如下程式碼操作:

 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雲後端同樣會自動發動一封郵件驗證資訊給使用者。

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

六、查詢使用者

查詢使用者和查詢普通物件一樣,只需指定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後臺檢視使用者表

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

七、修改密碼

使用舊密碼來重置新密碼的介面,示例如下: 修改

 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];
            }
        }];
複製程式碼

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

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

前提是在註冊操作的時候有新增過郵箱

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

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

  [BmobUser requestPasswordResetInBackgroundWithEmail:self.nameTextField.text block:^(BOOL isSuccessful, NSError *error) {
        if (isSuccessful) {
            [self showResultInfo:@"傳送成功,請去郵箱內檢視郵件"];
        }else{
            NSLog(@"%@",error);
            [self showResultInfo:@"傳送失敗,請檢視控制檯資訊"];
        }
        
    }];
複製程式碼

以下為未開啟郵箱驗證和註冊時未繫結郵箱的

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

密碼重置流程如下:

  1. 使用者輸入他們的電子郵件,請求重置自己的密碼。
  2. Bmob向他們的郵箱傳送一封包含特殊的密碼重置連線的電子郵件。
  3. 使用者根據嚮導點選重置密碼連線,開啟一個特殊的Bmob頁面,根據提示,他們可以輸入一個新的密碼。
  4. 使用者的密碼已被重置為新輸入的密碼。

九、總結

注意點:

  1. 需要在Bmob後臺開啟郵箱認證
  2. Bmob後臺User表裡可新增欄位來完善使用者資訊
  3. 通過郵箱操作密碼等資訊的需要在註冊是要求使用者驗證郵箱,否則操作失敗

Bmob接入具體操作可檢視上一篇文章 iOS獨立開發者使用Bmob第三方後臺服務初探 本文同步至個人部落格 程式碼傳送門,歡迎star,感興趣的可以留言一起探討。 搜尋公眾號JacerooChu或掃描下方二維碼一起討論和獲取更多資訊。

swap.png

相關文章