15

データを保存できるユーザーアカウントを自動生成し、後でそれらを適切なユーザー名/パスワードアカウントに昇格させようとしています。それを行うための最良の方法に関するアイデアはありますか?

認証プロバイダーを匿名からパスワードに切り替えることができるかどうかは明確ではありませんでした。

4

1 に答える 1

14

Firebase で匿名ログインを作成することから始めて、その認証「uid」キーをある種のセッションまたは Cookie に保存できます (使用しているフレームワークによって異なります)。クライアントは匿名ですが、保存したデータをこの匿名の「uid」にリンクできます。

ログイン後にユーザーにデータを転送するには、Firebase のonAuth()リスナーを使用する必要があります。これにより、ユーザーの認証データが変更されたときに通知されます。新しい認証済み uid を取得したら、保存したデータをその新しい uid にリンクして、匿名セッションを削除できます。

Firebase docs から変更されたサンプルを次に示します。

var firebaseRef = new Firebase('https://samplechat.firebaseio-demo.com');
firebaseRef.onAuth(function(authData) {
  if (authData) {
    // Client is logged in, so check if it's anonymous or a real user

    if (authData.provider === 'anonymous') {
      // user is anonymous
      // save authData.uid to some local session info, to keep track of data
    } else {
      // user is logged in
      // transfer any data that you had stored from the anonymous session to 
      // this new authUser.uid

  } else {
    // Client is unauthenticated

    // This would be a good spot to create the anonymous login
    firebaseRef.authAnonymously(function(error, authData) {
      if (error) {
        // handle login failure
      } else {
        // you are now anonymously logged in, but you really don't need to do anything
        // here, because your onAuth() listener is already going to catch this auth change
      }
  }
});

Firebase は、ユーザーが認証情報を変更したときに以前の uid が何であったかを通知しないため、その匿名の uid をどこかに保存する必要があります。ユーザーがログインするまでセッションデータを保存するだけで、匿名ログインを作成せずにすべてを実行することもできますが、匿名ログインの方が一貫性が高くなります。

于 2014-11-10T09:53:29.437 に答える