Posted at

[Androidアプリ] mBaaSで5分ですぐ作れる会員ログイン機能

More than 3 years have passed since last update.

アプリによくあるユーザ登録、会員管理、ログイン、ログアウトってあるんではないでしょうか。

基本的な機能なのに、作るのはなかなか大変、サーバも用意さないといけないですね!

そこで、われわれが提供しているニフティクラウドmobile backendを使えば、一通り実装ができます。

今回Androidでこちらのとてもきれいなテンプレートを参考して、サーバ機能を入れて、Android用ログインテンプレートを作りました。コードをぜんぶ公開していますので、そのままダウンロードしていただいたら動くものなので、ぜひお試しください!

ソースコードはこちらです。


概要

1)ニフティクラウド mobile backend - mBaaSでの会員の認証方法は以下の4つがあります。

2)今回はAndroidで、ユーザ名・パスワードでの認証方法について説明していきます。

イメージ的は以下のようになります。

device.png


準備


手順


  • テンプレートプロジェクトをダウンロード

  • SDKを追加(済み・最新SDKを利用したい場合、更新作業を行ってください)

  • アプリ作成し、キーを設定

  • 動作確認


STEP 1. テンプレートプロジェクト


  • プロジェクトのGithubページから「Download ZIP」をクリックします。

  • プロジェクトを解凍します。

  • AndroidStudioを開きます。

  • 解凍したプロジェクトを選択します。
    OpenFileProject.png

プロジェクトを選択し開きます。

MainDesing.png


STEP 2. SDKを追加と設定 (済み)

Android SDKとは、ニフティクラウドmobile backendが提供している「データストア」「プッシュ通知」などの機能を簡単まコードで利用できるものです。

002.png

mBaaSでは、Android, iOS, Unity, JavaScript SDKを提供しています。

今回Android SDKの追加し方と設定を紹介します。

※ダウンロードしたプロジェクトには既に設定済みですが、最新版が必要な場合は入れ替える必要があります。また既存のプロジェクトでニフティクラウドmobile backend を利用する場合も同じくSDKの実装が必要です。


  • SDKダウンロード
    SDKはここ(SDKリリースページ)から取得してください。


    • NCMB.jarファイルがダウンロードします。



  • SDKをインポート


    • app/libsフォルダにNCMB.jarをコピーします



  • 設定追加


    • app/build.gradleファイルに以下を追加します



dependencies {

compile 'com.google.code.gson:gson:2.3.1'
compile files('libs/NCMB.jar')
}


  • androidManifestの設定

タグの直前に以下のpermissionを追加します。

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


STEP 3. アプリキー設定


  • 会員登録(無料)をし、登録ができたらログインをすると下図のように「アプリの新規作成」画面出るのでアプリを作成します。

    mBass12.png


  • アプリ作成されると下図のような画面になります。


  • この2種類のAPIキー(アプリケーションキーとクライアントキー)は先ほどインポートしたAndroidStudioで作成するAndroidアプリにニフティクラウドmobile backendの紐付けるため、あとで使います。

    mBass34.png


この後動作確認でデータが保存される場所も確認しておきましょう。

mBass56.png


  • AndroidStudioで取得APIキー(アプリケーションキー、クライントキー)を設定する。

    MainActivity.png

    mBassAPIKey.png



  • AndroidStudioからビルドする。


    • 「プロジェクト場所」\app\build\outputs\apk\ ***.apk ファイルが生成される




STEP 4. 確認

アプリにてボタンをタブし、新規登録、ログインする事が確認出来ます。

AccountPattern.png

LoginPattern.png

mBaaS側も会員管理データが保存されたことを確認しています!

mBassMember2.png


コード説明


  • SDKおよび必要なライブラリーをインポートします

import com.nifty.cloud.mb.core.DoneCallback;

import com.nifty.cloud.mb.core.NCMB;
import com.nifty.cloud.mb.core.NCMBException;
import com.nifty.cloud.mb.core.NCMBUser;


  • SDKを初期化

MainActivityのOnCreateメソッドに実装、ここでAPIキーを渡します。

 @Override

protected void onCreate(Bundle savedInstanceState) {
<省略>
//**************** APIキーの設定とSDKの初期化 **********************
NCMB.initialize(this, "YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY");
}

1)会員の新規登録実装


  • mBaaSのAndroid SDKが提供するNCMBUserクラスが会員管理を操作するためのクラス。データを保存するには、このクラスが提供するsignUpInBackgroundメソッドを利用し、登録、ログインします。

  • 入力ユーザ名とパスワードの妥当性を確認し、設定したユーザ名(userName)とパスワード(password)で会員登録を行います。

  • signUpInBackground()を実施することで、非同期に保存が行われます。非同期実施するため、DoneCallBack()を使って、成功・失敗処理を指定します。


    • 会員登録に成功した場合は、ログイン成功ページを表示します。

    • 会員登録に失敗した場合、アラートでログイン失敗を表示します。



      public void signup() {

    <省略>
    // TODO: Implement your own signup logic here.
//NCMBUserのインスタンスを作成
NCMBUser user = new NCMBUser();
//ユーザ名を設定
user.setUserName(name);
//パスワードを設定
user.setPassword(password);
//設定したユーザ名とパスワードで会員登録を行う
user.signUpInBackground(new DoneCallback() {
@Override
public void done(NCMBException e) {
if (e != null) {
//会員登録時にエラーが発生した場合の処理
onSignupFailed();
} else {
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
// On complete call either onSignupSuccess or onSignupFailed
// depending on success
onSignupSuccess();
// onSignupFailed();
progressDialog.dismiss();
}
}, 3000);
}
}
});
}

2)既存会員のログイン実装


  • mBaaSのAndroid SDKが提供するNCMBUserクラスが会員管理操作するためのクラス。このクラスが提供するloginInBackgroundメソッドを利用し、ログインします。

  • 入力されたユーザ名とパスワードの妥当性を確認し、ユーザ名とパスワードでログインを実行します。

  • loginInBackground()を実施結果に応じて、


    • ログインに成功した場合は、ログイン成功ページを表示します。

    • ログインに失敗する場合、アラートでログイン失敗を表示します。



      public void login() {

    <省略>
// TODO: Implement your own authentication logic here.
//ユーザ名とパスワードを指定してログインを実行
try {
NCMBUser.loginInBackground(name, password, new LoginCallback() {
@Override
public void done(NCMBUser user, NCMBException e) {
if (e != null) {
//エラー時の処理
onLoginFailed();
} else {
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
// On complete call either onLoginSuccess or onLoginFailed
onLoginSuccess();
// onLoginFailed();
progressDialog.dismiss();
}
}, 3000);
}
}
});
} catch (NCMBException e) {
e.printStackTrace();
}

}


参考

サンプルコードをカスタマイズすることで、様々な機能を実装できます!

データ保存・データ検索・会員管理・プッシュ通知などの機能を実装したい場合には、

以下のドキュメントもご参考ください。


最後に

データを保存には自前でサーバを立て、運用・設計するだけでなく、アプリとサーバー間のやりとりなど、さまざまなことを考慮しなければなりません。そこでこのようなmBaaSサービスを使って、サーバー運用の手間をなくすことが、アプリ開発を最速・最短で行う重要な方法となってきます。開発も数行のコード書けばいいという便利なものです!しかも無料から始められます!導入してみてはいかがでしょうか?


License

  参考:Android login material design

NIFTY Cloud mobile backendのAndroid SDKのライセンス