mBaaSでは幾つかの認証機能を提供しています。
- ユーザID/パスワード認証
- メールアドレス/パスワード認証
- Facebook認証
- Twitter認証
- Google+認証
その中でメールアドレス/パスワード認証はメールアドレスの確認をする、しないという2パターンを選択できるようになっています。しかしメールアドレス認証時においてはメールアドレスの確認が取れていないと認証に使えませんので注意してください。
例えば以下のような実装をしたとします(JavaScript SDKで)
var user = new ncmb.User(); user.set("mailAddress", "atsushi2@moongift.jp") .set("userName", "atsushi2@moongift.jp") .set("password", "password") .signUpByAccount() .then(function(u) { console.log(u); }) .catch(function(e) { console.log(e); })
これで会員情報は作成されるのですが、mainAddressConfirmカラムがfalseのままとなっています。さらにこのフラグは管理画面から変更できません。
そして認証処理を実行しても401エラーが返ってきます。通常のログイン処理は次のようになります。
ncmb.User.loginWithMailAddress("atsushi2@moongift.jp", "password") .then(function(data){ // ログイン後処理 console.log('ログイン成功', data); }) .catch(function(err){ // エラー処理 console.log('ログイン失敗', err) });
これでは401エラーが返ってきます。
{ "code": "E401002", "error": "Authentication error with ID/PASS incorrect." }
まずメールアドレスの確認を行う
そこで、まずメールアドレスの確認処理を行います。
ncmb.User.requestSignUpEmail("atsushi3@moongift.jp") .then(function(data){ // 送信後処理 }) .catch(function(err){ // エラー処理 });
そして送られてきたメールに記載されているURLをクリックしてパスワードを登録します。
これで mainAddressConfirmカラムがtrueになり、認証できるようになります。
注意点
なお、単にメールアドレスを登録しただけの状態では会員管理上にデータを確認することができません。つまり、メールアドレスを入力しただけで落ちてしまっている会員候補の数は分かりませんのでご注意ください。また、ユーザIDはランダムに割り当てられます。
また、管理画面上で会員を作成するとmainAddressConfirmカラムはfalseのままになってしまいます。この状態では認証に利用できません。
メールアドレス認証を使って運用する場合、幾つかの注意点があります。しかしユーザID認証を使っている時にパスワード変更を行おうと思うとメールアドレスが必須になります。この点においてもメールアドレスを伴った認証の仕組みについて適切な運用を行うのが良いでしょう。