本格派エンジニアの工具箱

第35回 Appcelerator Cloud Servicesと連携するモバイルアプリの作成

この記事を読むのに必要な時間:およそ 6 分

ユーザの新規追加処理の実装

ユーザの追加はTitanium.Cloud.Users.create()メソッドを使って行います。このメソッドには以下のようなパラメータを渡します。

  • username - ユーザ名
  • email - メールアドレス
  • password - パスワード
  • password_confirmation - 確認用パスワード
  • first_name - 名前
  • last_name - 姓

このうち,ユーザ名/メールアドレスのいずれかと,パスワード,確認用パスワードは必須であり,その他は省略可能です。その他にタグ(tags)やロール(role⁠⁠,写真ID(photo/photo_id)などを設定することもできます。

次の例では,ユーザ名,パスワード,確認用パスワード,姓,名前を渡してcreate()を呼び出しています。

Cloud.Users.create({
	username: 'gihyo',
	password: 'gihyopass',
	password_confirmation: 'gihyopass',
	last_name: 'Giyho',
	first_name: 'Taro'
    }, function (e) {
	if (e.success) {
	    var user = e.users[0];
	    alert('ユーザを登録しました。現在ID: ' + user.id + ' でログイン中です。');
	    username.value = password.value = confirmPassword.value = firstName.value = lastName.value = '';
	}
	else {
	    alert((e.error && e.message) || JSON.stringify(e));
	}
	button.show();
    });

ユーザの追加に成功するとe.successにtrueが,失敗するとfalseが設定されます。作成されたユーザのオブジェクトはe.users[0]に格納されているので,ここからユーザIDやユーザ名などの情報を取得できます。なお,ユーザIDはユーザを追加した際に自動で設定されるものです。

これを踏まえて,AddWindow.jsは次のように作成しました。

function AddWindow(title) {
    var Cloud = require('ti.cloud');  // ACS用モジュールの読み込み

    var self = Ti.UI.createWindow({
	    title:title,
	    backgroundColor:'white'
	});
	
    var content = Ti.UI.createScrollView({
	    top: '10dp',
	    contentHeight: 'auto',
	    layout: 'vertical'
	});
    self.add(content);
    
    // ユーザ名入力フィールド
    var username = Ti.UI.createTextField({
	    hintText: 'ユーザ名',
	    top: '10dp', left: '10dp', right: '10dp',
	    height: '40dp',
	    borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED,
	    autocapitalization: Ti.UI.TEXT_AUTOCAPITALIZATION_NONE,
	    autocorrect: false
	});
    content.add(username);
    
    // パスワード入力フィールド
    var password = Ti.UI.createTextField({
	    hintText: 'パスワード',
	    top: '10dp', left: '10dp', right: '10dp',
	    height: '40dp',
	    borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED,
	    passwordMask: true
	});
    content.add(password);
    
    // 確認用パスワード入力フィールド
    var confirmPassword = Ti.UI.createTextField({
	    hintText: 'パスワードの確認',
	    top: '10dp', left: '10dp', right: '10dp',
	    height: '40dp',
	    borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED,
	    passwordMask: true
	});
    content.add(confirmPassword);
    
    // 姓入力フィールド
    var lastName = Ti.UI.createTextField({
	    hintText: '苗字',
	    top: '10dp', left: '10dp', right: '10dp',
	    hseight: '40dp',
	    borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED
	});
    content.add(lastName);
    
    // 名前入力フィールド
    var firstName = Ti.UI.createTextField({
	    hintText: '名前',
	    top: '10dp', left: '10dp', right: '10dp',
	    hseight: '40dp',
	    borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED
	});
    content.add(firstName);

    // ユーザ追加ボタン
    var button = Ti.UI.createButton({
	    top: '10dp', left: '10dp', right: '10dp', bottom: '10dp',
	    height: '44dp', width: '200dp',
	    title: '追加',
	});
    content.add(button);
	
    // ユーザの追加処理
    button.addEventListener('click', function() {
	    Cloud.Users.create({
		    username: username.value,
		    password: password.value,
		    password_confirmation: confirmPassword.value,
		    last_name: lastName.value,
		    first_name: firstName.value
		}, function (e) {
		    if (e.success) {
			var user = e.users[0];
			alert('ユーザを登録しました。現在ID: ' + user.id + ' でログイン中です。');
			username.value = password.value = confirmPassword.value = firstName.value = lastName.value = '';
		    }
		    else {
			alert((e.error && e.message) || JSON.stringify(e));
		    }
		    button.show();
		});
	});
	
    return self;
};

module.exports = AddWindow;

著者プロフィール

杉山貴章(すぎやまたかあき)

ONGS Inc.所属のプログラマ兼テクニカルライター。雑誌,書籍,Webメディアで多数の著作をもつ。

著書