5. ユーザ管理

ここではユーザ管理機能の利用方法について説明します。

5.1. サインアップ

ユーザを新規登録します。

NbUser user = new NbUser();

// ユーザ名とE-mail アドレスを設定
user.setUsername(username);
user.setEmail(email);

// サインアップ実行
user.register(password, new NbCallback<NbUser>() {
    @Override
    public void onSuccess(NbUser user) {
        Log.d(TAG, "User registered");
    }
    @Override
    public void onFailure(int status, NbErrorInfo errorInfo) {
        Log.d(TAG, "Failed : " + status);
    }
});

まずはじめに NbUser のインスタンスを取得します。

つぎに、username と email を設定し、register() を呼び出してサインアップを行います。 username はオプションですが、email は必須となります。

5.2. ログイン

ログインには NbUser の login() を使用します。

// ログイン処理
NbUser.LoginParam param = new NbUser.LoginParam().email(email).password(password);
NbUser.login(param, new NbCallback<NbUser>() {
    @Override
    public void onSuccess(NbUser user_login) {
        ...
    }
    @Override
    public void onFailure(int status, NbErrorInfo errorInfo) {
        ...
    }
});

LoginParam にはユーザ名、E-mailアドレスのいずれ一方と、パスワードを設定します。

ログインが完了すると、ログイン状態(セッショントークン)がストレージに保存されます。

注釈

セッショントークンには有効期限があります。 有効期限が切れると、自動的に未ログイン状態となります。 セッショントークンの有効時間はデベロッパコンソールで変更可能です(デフォルトは24時間)。

5.3. ログイン状態の取得

ユーザがログイン状態かどうかは isLoggedIn() で確認できます。

if (NbUser.isLoggedIn()) {
    // ログイン中
}

注釈

セッショントークンが有効期限切れの場合は false が返ります。 後述するオフライン機能を使用している場合は、ログインキャッシュの有効時間の影響も受けます。

5.4. ログアウト

ログアウトは logout() で行います。

NbUser.logout(new NbCallback<NbUser>() {
    @Override
    public void onSuccess(NbUser user) {
        ...
    }

    @Override
    public void onFailure(int status, NbErrorInfo errorInfo) {
        ...
    }
});

5.5. パスワードリセット

パスワードリセットは resetPassword() で行います。 username と email はいずれか一方のみを指定します(もう一方は null)。

NbUser().resetPassword(username, email, NbResultCallback() {
    @Override
    public void onSuccess() {
        ...
    }

    @Override
    public void onFailure(int status, NbErrorInfo errorInfo) {
        ...
    }
});

5.6. クライアント証明書認証

クライアント証明書認証を使用すると、ユーザはログインを明示的に行わずに、認証済みユーザとして各種APIを使用することができます。

サービス生成前に、NbService.setClientCertificate() で証明書の設定を行います。 引数にクライアント証明書(PKCS#12形式)、証明書のパスフレーズを指定します。

InputStream certificate;
try {
    certificate = new FileInputStream(CLIENT_CERT_FILE);
    NbService.setClientCertificate(certificate, PASSWORD, null);
} catch (Exception e) {
    // error
} finally {
    // close stream
}

注釈

サーバ側でログインの状態を管理するため、login(),logout(),isLoggedIn()などは使用しません。

自ユーザ情報の取得が必要な場合、NbUser.refreshCurrentUser()を使用してサーバに問い合わせを行います。

注釈

クライアント証明書認証を使用するためには、事前にサーバの環境構築、設定が必要となります。

詳細は クライアント証明書認証 を参照してください。

また、Tomcatで直接認証を行う場合、クライアント証明書の期限切れ等の問題があると TLSのセッション確立ができません。 クライアントは通信失敗として扱い、ステータスコード500のエラーが返却されます。

クライアント証明書を使用した場合にのみ通信ができない場合、サーバの設定とあわせ、証明書に問題が無いかご確認下さい。