サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >SDKガイド(Unity):会員管理

SDKガイド(Unity)

ドキュメント内検索

会員管理

このドキュメントは更新されていません。
こちらから最新版をご覧ください。

プロパティ

会員管理の主要規定プロパティは以下の通りです。

// UserName: ユーザー名
// Password: パスワード
// Email: メールアドレス
// CurrentUser : ログイン中のユーザー
// SessionToken: セッショントークン

ユーザーの新規登録

NCMBUserオブジェクト作成後、SignUpAsyncメソッドで登録処理を行います。

// 新規登録
NCMBUser user = new NCMBUser();
user.UserName = "user1";
user.Password = "password1";
user.Email = "email@example.com";

// 任意フィールドに値を追加 
user.Add("phone", "987-654-3210");
user.SignUpAsync((NCMBException e) => { 
    if (e != null) {
        UnityEngine.Debug.Log ("新規登録に失敗: " + e.ErrorMessage);
    } else {
        UnityEngine.Debug.Log ("新規登録に成功");
    }
});

メールアドレスによる会員登録

RequestAuthenticationMailAsyncメソッドを実行すると、
メールアドレスでの会員登録を行うためのメールが送信されます。

NCMBUser.RequestAuthenticationMailAsync ("your.mailaddress@sample.com", (NCMBException e) => {
    if (e != null) {
        UnityEngine.Debug.Log ("新規登録に失敗: " + e.ErrorMessage);
    } else {
        UnityEngine.Debug.Log ("新規登録に成功");
    }
});

ログイン・ログアウト

新規登録時に設定したユーザー名とパスワードでログインすることができます。
また、ログアウトする場合はLogOutAsyncメソッドを利用します。

// ユーザー名とパスワードでログイン
NCMBUser.LogInAsync ("user1", "password1", (NCMBException e) => {    
    if (e != null) {
        UnityEngine.Debug.Log ("ログインに失敗: " + e.ErrorMessage);
    } else {
        UnityEngine.Debug.Log ("ログインに成功!");
    }
});

// メールアドレスとパスワードでログイン
NCMBUser.LogInWithMailAddressAsync ("your.mailaddress@sample.com", "password", (NCMBException e) => {
    if (e != null) {
        UnityEngine.Debug.Log ("ログインに失敗: " + e.ErrorMessage);
    } else {
        UnityEngine.Debug.Log ("ログインに成功!");
    }
});

// ログアウト
try {
    NCMBUser.LogOutAsync ();
} catch (NCMBException e) {
    UnityEngine.Debug.Log ("エラー: " + e.ErrorMessage);
}

ログイン中のユーザーの取得

CurrentUserプロパティで、現在ログイン中のユーザー情報を取得することができます。

NCMBUser currentUser = NCMBUser.CurrentUser;
if (currentUser != null) {
    // ログイン中のユーザーの取得に成功
    UnityEngine.Debug.Log ("ログイン中のユーザー: " + currentUser.UserName);
} else {
    // 未ログインまたは取得に失敗
    UnityEngine.Debug.Log ("未ログインまたは取得に失敗");
}

ユーザーオブジェクトのセキュリティ

ユーザーオブジェクトにACLを設定することで参照/更新できるユーザーを制限することが可能です。

    try {
        // 新規登録
        NCMBUser newUser = new NCMBUser();
        newUser.UserName = "user2";
        newUser.Password = "password2";
        newUser.SignUpAsync();
        Thread.Sleep (5000);

        // ACLを本人のみに設定
        newUser.ACL = new NCMBACL(NCMBUser.CurrentUser.ObjectId);
        newUser.SaveAsync();
        Thread.Sleep (5000);

        // ログアウト
        NCMBUser.LogOutAsync();
        Thread.Sleep (5000);

        // 別のユーザーでログイン
        NCMBUser.LogInAsync("user1", "password1");
        Thread.Sleep (5000);

        // 先ほど新規登録したユーザーのユーザー名を変更
        newUser.UserName = "user2-1";
        newUser.SignUpAsync((NCMBException e) => { 
            if (e != null) {
                UnityEngine.Debug.Log ("新規登録に失敗: " + e.ErrorMessage); // E403001 "No access with ACL." が発生する
            } else {
                UnityEngine.Debug.Log ("新規登録に成功");
            }
        });
    } catch(NCMBException e) {
        UnityEngine.Debug.Log("エラー: " + e.ErrorMessage);
    }

オブジェクトへのACL設定

オブジェクトにACLを設定する際に、ユーザー単位で設定することができます。

try {
    // ログイン
    NCMBUser.LogInAsync("user1", "password1");

    // 自分だけが参照/更新できるオブジェクトを作成
    NCMBObject privateNote = new NCMBObject("Note");
    privateNote.Add("content", "This note is private!");
    privateNote.ACL = new NCMBACL(NCMBUser.CurrentUser.ObjectId);
    privateNote.SaveAsync();
    Thread.Sleep (5000);

    // 複数の会員が参照/更新できるオブジェクトを作成
    NCMBObject sharedNote = new NCMBObject("Note");
    sharedNote.Add("content", "This note is shared!");
    NCMBACL groupACL = new NCMBACL();

    NCMBUser user3 = new NCMBUser();
    user3.UserName = "user3";
    user3.Password = "password3";
    user3.SignUpAsync();
    Thread.Sleep (5000);

    NCMBUser user4 = new NCMBUser();
    user4.UserName = "user4";
    user4.Password = "password4";
    user4.SignUpAsync();
    Thread.Sleep (5000);

    groupACL.SetReadAccess (user3.ObjectId, true);
    groupACL.SetReadAccess (user4.ObjectId, true);

    groupACL.SetWriteAccess (user3.ObjectId, true);
    groupACL.SetWriteAccess (user4.ObjectId, true);

    sharedNote.ACL = groupACL;
    sharedNote.SaveAsync();

} catch(NCMBException e) {
    UnityEngine.Debug.Log("エラー: " + e.ErrorMessage);
}

パスワードのリセット

パスワードのリセットが行えるのは、メールアドレスの登録があるユーザーのみとなります。
以下のようにリセット要求を発行すると、登録メールアドレスに「仮パスワード」「会員パスワード変更ページのURL」が送信されます。
「会員パスワード変更ページのURL」から、パスワードの変更が可能です。

また、ニフティクラウド mobile backend では、パスワード変更のAPIは用意していないため、パスワードを変更したい場合にはパスワードのリセットの処理が必要となります。

NCMBUser.RequestPasswordResetAsync ("email@example.com", (NCMBException e) => {    
    if (e != null) {
        UnityEngine.Debug.Log ("パスワードリセット要求に失敗: " + e.ErrorMessage);
    } else {
        UnityEngine.Debug.Log ("パスワードリセット要求に成功");
    }
});               

ユーザー検索

NCMBQueryを使うことでユーザーの検索をすることができます。

NCMBQuery<NCMBUser> query = NCMBUser.GetQuery ();
query.WhereEqualTo ("phone", "987-654-3210");
query.FindAsync ((List<NCMBUser> userList , NCMBException e) => {
    if (e != null) {
        UnityEngine.Debug.Log ("失敗 : " + e.Message);
    } else {
        foreach (NCMBUser user in userList) {
            UnityEngine.Debug.Log ("ユーザー名: " + user.UserName);
        }
    }
});

ユーザーの検索時は、検索対象のユーザーに付与されているACL設定にご注意ください。
ユーザー新規作成時にACLの設定を付与しない場合(デフォルト)は、自分自身のみ読込、書込権限が与えられているので、
検索をかける時は、検索者に対して読込権限が与えられている必要があります。

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ