LoginSignup
13
17

More than 5 years have passed since last update.

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

Posted at

アプリによくあるユーザ登録、会員管理、ログイン、ログアウトってあるんではないでしょうか。
基本的な機能なのに、作るのはなかなか大変、サーバも用意さないといけないですね!
そこで、われわれが提供しているニフティクラウド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のライセンス

13
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
17