iOS平台 | 快速集成華為AGC認證服務

  • 2021 年 10 月 19 日
  • 筆記

介紹

如何讓用戶根據已有的帳號來進行登錄註冊呢?在應用中集成華為AGC認證服務SDK來輕鬆快速地實現這個功能。

本篇內容根據官網文檔指導集成過程總結完成,關於集成步驟,官網的資料寫的有點多,現在我總結一下步驟:

1、開通華為認證服務

2、在iOS項目中集成SDK

3、設計登錄註冊頁面

4、開啟認證方式

5、註冊登錄功能開發

6、打包測試

開通華為認證服務

在AppGallery Connect頁面點擊”我的項目”,在項目的應用列表中選擇需要開通認證的應用,導航選擇”構建 > 認證服務”。如果是首次使用認證服務,請點擊”立即開通”開通服務。

集成SDK

針對Xcode開發環境,您可以通過Cocoapods集成方式將認證 SDK集成到您的Xcode開發環境中。

1. 在Xcode項目中添加當前應用的AppGallery Connect配置文件。

  1. 登錄AppGallery Connect網站,點擊「我的項目」。

  2. 在項目列表中找到您的項目,在項目下的應用列表中選擇您需要集成SDK的應用。

  3. 點擊「項目設置」中「應用」欄下的「agconnect-services.plist」下載配置文件。

  4. 將「agconnect-services.plist」文件拷貝到應用級根目錄下。

2. 創建Podfile文件。

打開命令行窗口,導航至Xcode項目所在的位置,創建Podfile文件。如果已經存在,可跳過本步驟。

cd project-directory
pod init

3. 編輯Podfile文件。

  1. 集成認證SDK

編輯Podfile文件,增加pod依賴pod 『’AGConnectAuth’。

target   'AGConnectAuthDemo' do
 pod 'AGConnectAuth'
 end
  1. 執行 pod install,然後打開.xcworkspace文件查看該項目。

介面設計

本次Codelab中您可以在Xcode工程中創建一個布局頁面,參照下圖進行UI設計,通過手機號、郵箱帳號進行註冊登錄。

開啟認證方式

1. 登錄AppGallery Connect網站,點擊「我的項目」。

2. 在項目列表中找到您的項目,在項目下的應用列表中選擇您的應用。

3. 在「構建」欄下找到「 認證服務」,在”認證方式”頁簽下「操作」一欄里,點擊啟用手機號碼、郵箱地址。

註冊登錄功能開發

1. 在將故事板的控制項關聯到ViewController中,以便您通過輸入框獲得登錄註冊所需的參數。

  @IBOutlet weak var phoneText:   UITextField!//手機帳號輸入框
     @IBOutlet weak var phoneVertifyText:   UITextField!//手機驗證碼輸入框
     @IBOutlet weak var phonePassword:   UITextField!//手機帳號密碼輸入框
     @IBOutlet weak var emailText:   UITextField!//郵箱帳號輸入框
     @IBOutlet weak var emailVertifyText:   UITextField!//郵箱驗證碼輸入框
     @IBOutlet weak var emailPassword:   UITextField!//郵箱帳號密碼輸入框

2. 如果使用的是未註冊過的手機號,首先您需要發送驗證碼到手機,來驗證是否本人註冊。輸入手機號碼,點擊「發送驗證碼」按鈕,程式碼執行到請求手機驗證碼的方法,在返回中可以看到發送結果。

@IBAction func   phoneSendVertifyCode(_ sender: Any) {
         let setting =   AGCVerifyCodeSettings.init(action: AGCVerifyCodeAction.registerLogin, locale:   nil, sendInterval: 30)
           AGCPhoneAuthProvider.requestVerifyCode(withCountryCode:   "86", phoneNumber: phoneText.text ?? "", settings:   setting).onSuccess { (results) in
             //手機驗證碼發送成功
         }.onFailure { (error) in
             //手機驗證碼發送失敗
         }
     }

3. 手機收到驗證碼後,輸入驗證碼和您要設置的密碼,就可以進行註冊了。在頁面上點擊「register」按鈕,執行手機號註冊的方法,註冊結果您也可以在block返回中看到。

@IBAction func register(_   sender: Any) {
           AGCAuth.instance().createUser(withCountryCode: "86",   phoneNumber: phoneText.text ?? "", password: phonePassword.text ??   "", verifyCode: phoneVertifyText.text ?? "").onSuccess {   (result) in
             //手機註冊成功
         }.onFailure { (error) in
             //手機註冊失敗
         }
     }

4. 註冊成功後,輸入您的手機號和設置的密碼,點擊「login」按鈕進行登錄。這樣您就完成了,使用AGConnectAuth進行手機號註冊登錄的步驟。

@IBAction func login(_ sender:   Any) {
         let credential =   AGCPhoneAuthProvider.credential(withCountryCode: "86", phoneNumber:   phoneText.text ?? "", password: phonePassword.text ?? "")
         AGCAuth.instance().signIn(credential:   credential).onSuccess { (result) in
             //登錄成功
         }.onFailure { (error) in
             //登錄失敗
         }
     }

5. 如果使用的是未註冊過的郵箱帳號,首先需要發送驗證碼到郵箱來驗證。輸入郵箱號碼,點擊「發送驗證碼」按鈕,程式碼執行到請求郵箱驗證碼的方法,在返回中您也可以看到發送結果。

@IBAction func   emailSendVertifyCode(_ sender: Any) {
         let setting = AGCVerifyCodeSettings.init(action:   AGCVerifyCodeAction.registerLogin, locale: nil, sendInterval: 30)
           AGCEmailAuthProvider.requestVerifyCode(withEmail: emailText.text ??   "", settings: setting).onSuccess { (result) in
             //郵箱驗證碼發送成功
         }.onFailure { (error) in
             //郵箱驗證碼發送失敗
         }
     }

6. 郵箱收到驗證碼後,輸入驗證碼和您要設置的密碼,點擊「register」按鈕,就可以完成註冊了。

@IBAction func register(_   sender: Any) {
           AGCAuth.instance().createUser(withEmail: emailText.text ??   "", password: emailPassword.text ?? "", verifyCode:   emailVertifyText.text ?? "").onSuccess { (result) in
             //郵箱註冊成功
         }.onFailure { (error) in
             //郵箱註冊失敗
         }
     }

7. 註冊成功後,輸入您的郵箱號和設置的密碼,點擊「login」按鈕進行登錄。這樣您就完成了,使用AGConnectAuth進行郵箱註冊登錄的步驟。

@IBAction func login(_   sender: Any) {
         let credential =   AGCEmailAuthProvider.credential(withEmail: emailText.text ?? "",   password: emailPassword.text ?? "")
         AGCAuth.instance().signIn(credential:   credential).onSuccess { (result) in
             //登錄成功
         }.onFailure { (error) in
             //登錄失敗
         }
     }

8. 調用signOut方法,退出登錄狀態。

@IBAction func logout(_   sender: Any) {
         AGCAuth.instance().signOut()
     }

打包測試

1. 在Xcode上點擊運行按鈕,在手機或模擬器上運行應用。輸入手機號碼,點擊「發送驗證碼」按鈕,待手機收到驗證碼,輸入驗證碼和您要設置的密碼,點擊「register」,打斷點查看是否註冊成功,註冊成功後點擊「login」。打斷點查看返回結果,result可以看到登錄成功後的用戶資訊。


2. 驗證郵箱註冊登錄功能時,首先要點擊「logout」按鈕退出登錄狀態,否則再次登錄會失敗。輸入郵箱帳號,點擊「發送驗證碼」按鈕,輸入驗證碼和您要設置的密碼,點擊「register」,註冊成功後點擊「login」。查看result可以看到登錄成功後的用戶資訊。


總結

認證服務集成簡單,SDK依賴體積小,可以實現跨平台的分享,Android和iOS都可以支援,不需要在不同的平台做不同的適配了,節約工作量。

運營做推廣可以再AGC介面上創建,開發做分享功能可以在端側用程式碼創建,簡直完美。

參考文檔:

華為AGC認證服務開發文檔://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-introduction-0000001053732605
更多精彩內容,請見華為開發者官方論壇→//developer.huawei.com/consumer/cn/forum/home?ha_source=sanfang