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

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

SDKガイド(iOS)

会員管理

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

プロパティ

会員管理の主要規定フィールドは以下の通りです。

// userName: ユーザー名
// password: パスワード
// mailAddress: メールアドレス

ユーザーの新規登録

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

NCMBUser *user = [NCMBUser user];
user.userName = @"user1";
user.password = @"password1";
user.mailAddress = @"email@example.com";

// 任意フィールドに値を設定
[user setObject:@"987-654-3210" forKey:@"phone"];
[user signUpInBackgroundWithBlock:^(NSError *error) {
    if (!error) {
        NSLog(@"新規登録に成功");
    } else {
        NSLog(@"新規登録に失敗: %@", error);
    }
}];

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

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

NSError *error = nil;
[NCMBUser requestAuthenticationMail:@"your.mailaddress@sample.com" error:&error];

ログイン・ログアウト

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

// ログアウト
[NCMBUser logOut];

// ユーザー名とパスワードでログイン
[NCMBUser logInWithUsernameInBackground:@"user1" password:@"password1" block:^(NCMBUser *user, NSError *error) {
    if (!error) {
        NSLog(@"ログイン成功");
    } else {
        NSLog(@"ログイン失敗: %@", error);
    }
}];

// メールアドレスとパスワードでログイン
[NCMBUser logInWithMailAddressInBackground:@"your.mailaddress@sample.com" password:@"password" block:^(NCMBUser *user, NSError *error) {
    if (error){
        //エラー処理
    } else {
        //ログイン成功時の処理
    }
}];

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

currentUserメソッドで、現在ログイン中のユーザー情報を取得することができます。

NCMBUser *currentUser = [NCMBUser currentUser];
if (currentUser) {
    // ログイン中のユーザーの取得に成功
    NSLog(@"ログイン中のユーザー: %@", currentUser.userName);
} else {
    // 未ログインまたは取得に失敗
    NSLog(@"未ログインまたは取得に失敗");
}

匿名ユーザー

匿名ユーザーを利用するには、ダッシュボードで機能を有効にする必要があります。
詳しくはダッシュボードの使い方をご覧ください。

NCMBAnonymousUtilsクラスを利用して、匿名ユーザーでログインします。

[NCMBAnonymousUtils logInWithBlock:^(NCMBUser *user, NSError *error) {
    if (!error) {
        NSLog(@"匿名ユーザーでログイン成功");
    } else {
        NSLog(@"匿名ユーザーでログイン失敗");
    }
}];

isLinkedWithUserメソッドで匿名ユーザーでログインしているか確認できます。

if ([NCMBAnonymousUtils isLinkedWithUser:[NCMBUser currentUser]]) {
    NSLog(@"匿名ユーザー");
} else {
    NSLog(@"匿名ユーザーではない");
}

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

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

// 新規登録
NCMBUser *newUser = [NCMBUser user];
newUser.userName = @"user2";
newUser.password = @"password2";
[newUser signUp:nil];

// ACLを本人のみに設定
NCMBACL *acl = [NCMBACL ACLWithUser:[NCMBUser currentUser]];
[newUser setACL:acl];
[newUser save:nil];

// ログアウト
[NCMBUser logOut];

// 別のユーザーでログイン
[NCMBUser logInWithUsername:@"user1" password:@"password1" error:nil];

// 先ほど新規登録したユーザーのユーザー名を変更
newUser.userName = @"user2-1";
[newUser saveInBackgroundWithBlock:^(NSError *error) {
    if (!error) {
        NSLog(@"登録成功");
    } else {
        NSLog(@"登録失敗: %@", error);  // E403001 "No access with ACL." が発生する
    }
}];

オブジェクトへのACL設定

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

// ログイン
[NCMBUser logInWithUsername:@"user1" password:@"password1" error:nil];

// 自分だけが参照/更新できるオブジェクトを作成
NCMBObject *privateNote = [NCMBObject objectWithClassName:@"Note"];
[privateNote setObject:@"This note is private!" forKey:@"content"];
[privateNote setACL:[NCMBACL ACLWithUser:[NCMBUser currentUser]]];
[privateNote save:nil];

// 複数の会員が参照/更新できるオブジェクトを作成
NCMBObject *sharedNote = [NCMBObject objectWithClassName:@"Note"];
[sharedNote setObject:@"This note is shared!" forKey:@"content"];
NCMBACL *groupACL = [NCMBACL ACL];

NCMBUser *user3 = [NCMBUser user];
user3.userName = @"user3";
user3.password = @"password3";
[user3 signUp:nil];

NCMBUser *user4 = [NCMBUser user];
user4.userName = @"user4";
user4.password = @"password4";
[user4 signUp:nil];

[groupACL setReadAccess:YES forUser:user3];
[groupACL setReadAccess:YES forUser:user4];

[groupACL setWriteAccess:YES forUser:user3];
[groupACL setWriteAccess:YES forUser:user4];

[sharedNote setACL:groupACL];
[sharedNote save:nil];

パスワードのリセット

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

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

[NCMBUser requestPasswordResetForEmail:@"email@example.com" error:nil];

ユーザー検索

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

NCMBQuery *query = [NCMBUser query];
[query whereKey:@"phone" equalTo:@"987-654-3210"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
       for (NCMBUser *user in objects) {
           NSLog(@"ユーザー名: %@", user.userName);
       }
    } else {
       NSLog(@"エラー: %@", error);
    }
}];

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

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

ページの先頭へ