天天看點

使用Bmob進行使用者登入

最近剛好使用到Bmob雲服務,在網上調試了好久,總算是成功了。看到很多關于Bmob登入的方法,但都是屬于老版本,好像在網上沒看到什麼使用新版本的登入,是以想在研究完之後分享下經驗,順便說一下,不怎麼寫部落格,是以也想借這個機會鍛煉一下寫作能力,有不足的地方,還希望有心的小夥伴們多多指教。

既然是使用Bmob提供的相關服務,那首先自然是到官網上将sdk下載下傳下來內建到我們的項目當中。這裡我使用的開發環境是AndroidStudio,小夥伴們要記得注意。我個人感覺使用AndroidStudio和Eclipse不管是項目開發還是內建外部sdk都有很大的不同,我這裡使用的版本是bmob-sdk:3.5.0。按照Bmob官方的說明文檔首先是将Bmob的maven倉庫位址配置到我們項目的build.gardle檔案中,我的配置方式如下:

allprojects {

    repositories {

        jcenter()

        maven {

            url "https://raw.github.com/bmob/bmob-android-sdk/master"

        }

    }

}

配置完該倉庫位址之後,文檔要求我們接着在gradle檔案中添加compile依賴庫

useLibrary 'org.apache.http.legacy'

然後在dependencies中配置我們需要的sdk工具包,這裡将我們要用到的相應的版本配置進去

compile 'cn.bmob.android:bmob-sdk:3.5.0'

因為我的項目是在Android6.0的真機上進行調試的,按照官方的說明文檔,要相容Android6.0,還需要添加以下依賴

compile 'cn.bmob.android:http-legacy:1.0'

還有就是文檔中提到需要配置com.android.support:appcompat-v包,但是我的AndroidStudio中一般建立項目時已經預設配置好了,我這裡使用的是v7包。較為複雜的build.gradle檔案配置完成後接下來剩下的加入相應的權限就相對來說比較簡單了。

緊接着是在代碼中初始化SDK,這裡要說的是最新版本的登入功能。我自己在網上搜尋到的關于這一功能的說明都是當我們實作登入接口時API要求我們實作兩個方法,一個是登入成功的方法,另一個是登入失敗的方法。但是當我配置完SDK後調用登入方法時,卻發現它隻要求我實作一個方法,代碼如下:

```

Bmob.initialize(Login.this, BmobCloudDao.Application_ID);

        BmobUser bu = new BmobUser();

        bu.setUsername(username);

        bu.setPassword(password);

        bu.login(new SaveListener<BmobUser>() {

            @Override

            public void done(BmobUser bmobUser, BmobException e) {

                progressDialog.dismiss();

                if (e == null) {

                    Utils.showTest(Login.this, "登入成功!");

                    Intent intent = new Intent();

                    intent.putExtra(Utils.USER_NAME, username);

                    setResult(Utils.REQUEST_CODE, intent);

                    finish();

                } else {

                    Utils.showTest(Login.this, "登入失敗,請檢查使用者名和密碼是否正确");

                }

            }

        });

在上面的代碼段中我們可以看到,首先是調用Bmob類的初始化方法,它接收兩個參數,一個是上下文,第二個是我們在Bmob官網上注冊應用的APP_ID,在雲端的資料表中,我們建立應用時它會為我們提供一個預設的登入使用者的資料表,并且在代碼中SDK為我們提供了BombUser類來表示登入的使用者,我們将這個類的對象建立出來并設定完使用者名和密碼之後調用login方法,它要求我們傳入一個SaveListener的抽象類,并實作該方法。到這裡就發現它的不同之處了,這裡隻要求我們實作一個done(完成)的方法,并沒有什麼成功和失敗的方法,并且,這裡的login方法隻接收一個參數,而我在網上搜尋的都是傳入兩個參數的(另一個參數是上下文)。雖然兩個方法經過版本更新後變成了隻有一個方法,但我發現使用方式卻是一樣的。在done方法中我們可以發現,它傳入的第二個參數是一個BmobException的異常對象,那麼我們仍然在該方法中對它進行判空操作,若該對象為空,則給出使用者登入成功的提示。否則,可以通過調用該異常對象的getMessage方法來擷取異常資訊。

這裡分享一個我個人調試的細節錯誤,在代碼完成後我在手機上運作,登入失敗後通過調試給出了9016的資訊,我到Bmob的官網上查找錯誤碼清單卻發現該錯誤碼表示“無網絡連接配接,請檢查您的手機網絡”,然後我檢查自己的手機,明明聯入網絡了啊,于是糾結了好久....後來才發現是沒有配置相應的權限(具體權限可以到官方文檔檢視)。

最後再說明一下,由于本人在開發的時候,并沒有找到對最新版本的登入功能的說明,是以想在這裡分享一下,其實個人感覺一般第三方提供的SDK比較難不是使用部分,恰恰是配置部分......

繼續閱讀