ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

匿名会員からパスワード認証に切り替えるための手順【Swift編】

f:id:mbaasdevrel:20190128141920p:plain アプリで最初はデモとして匿名会員を使いつつ、使い込んでいく内に他のデバイスでも情報を共有したり、正式な会員登録を行うステップに進むことがあります。その際の手順について紹介します。

フローについて

まず現在は匿名会員でログインしている状態とします。そのアカウントにパスワードを結びつけるフローになります。

NCMBAnonymousUtils.logIn({(user, error) in
    if (error != nil) {
        print(error);
    } else {
        self.lbluserName.text = user?.userName
    }
});

匿名認証機能は管理画面の設定で有効にします。

f:id:mbaasdevrel:20190128141908p:plain

メールアドレス認証を有効にする

NCMBではパスワード変更APIが提供されていないので、必ずメール経由になります。そのため、管理画面で必ずメールアドレス認証を有効にしてください。

f:id:mbaasdevrel:20190128141920p:plain

メールアドレスを設定する

次にメールアドレスを設定します。この時、一度メールアドレス確認メールが送信されます。

let email = txtEmail.text
let user = NCMBUser.current()
user?.setObject(email, forKey: "mailAddress")
user?.saveInBackground({(error) in
  if (error != nil) {
    print(error)
  } else {
    // 処理成功
  }
})

メールアドレス宛にパスワード変更メールを送信する

そしてログインしている状態でパスワードリセットを実行します。

NCMBUser.requestPasswordResetForEmail(inBackground: email, block: {(error) in
  if (error != nil) {
    print(error);
  } else {
    print("メール送信完了")
  }
})

メールに従って処理する

そうすると指定したメールアドレス宛にメールが来ます。そこには仮パスワードが記載されています。パスワード変更画面で仮パスワードを指定し、新しいパスワードを指定します。

f:id:mbaasdevrel:20190128141941p:plain

ログインする

パスワードを変更したら、そのメールアドレスとパスワードでログインできます。

NCMBUser.logInWithMailAddress(inBackground: txtEmail.text, password: txtPassword.text, block: {(user, error) in
  if (error != nil) {
    print(error)
  } else {
    self.lbluserName.text = user?.userName
  }
})

IDとパスワードログインにする

メールアドレスが設定できていれば、後は userName を変更するだけでID/パスワード認証に変更できます。その際には管理画面でID/パスワード認証を許可してください。

コードは以下のようになります。

NCMBUser.logInWithUsername(inBackground: txtUserName.text, password: txtPassword.text, block: {(user, error) in
  if (error != nil) {
    print(error)
  } else {
    self.lbluserName.text = user?.userName
  }
})

まとめ

ユーザ向けに正式登録後もデータを引き継ぎたい時には上記の処理を参考にしてください。処理は決して難しくありませんが、管理画面の設定を忘れずに行ってください。