2017-09-09 10 views
1

ユーザーが初めて自分のアプリケーションを実行すると、そのユーザーのために匿名アカウントが作成され、上位レベルの機能を使用することに決めた場合、認証済みアカウントFirebaseの認証リンクエラー - ユーザーは特定のプロバイダの1つのIDにしかリンクできません

アノン記号について

コード

// No user is signed in. 
Auth.auth().signInAnonymously() { (usr, err) in 
    if (err == nil) { 
     print("Anon User ID \(usr!.uid)") 
    } else { 
     print("Anon auth error \(String(describing: err!.localizedDescription))") 
    } 
} 

登録、私はそう

Auth.auth().createUser(withEmail: email, password: password) { (user, err) in 
    if (err != nil) { 
     print("Error registering \(String(describing: err!.localizedDescription))") 
    } else { 
     let credential = EmailAuthProvider.credential(withEmail: email, password: password) 
     Auth.auth().currentUser!.link(with: credential, completion: {(user, err) in 
      if (err != nil) { 
       // Error 
      } else { 
       // Linked 
      } 
     }) 
    }) 
のように匿名アカウントへの電子メールの資格情報とリンクして新しいアカウントを作成する簡単な(ドキュメントから直接取得)される中

されている問題は、

私は、「ユーザーが唯一の指定されたプロバイダのために1つのIDにリンクさせることができる」GET毎回だと私はすべての

アカウント、匿名でメール認証にFirebaseに何のアカウントを登録していません正常に作成されましたが、リンクできません。

答えて

1

既存のFirebaseユーザーを2つリンクすることはできません。既存のユーザーにのみ新しい資格情報をリンクできます。 ユーザーを登録するときは、最初にcreateUserを呼び出さずに、電子メール/パスワード認証情報を使用して匿名ユーザーにcurrentUser.link withCredentialを送信するだけです。これは基本的に匿名ユーザーを電子メール/パスワードユーザーにアップグレードしています。

関連する問題