2016-08-22 12 views
9

Web için Firebase'i Kullanma Anonim bir kullanıcıyı başarıyla oluşturabilirim. Ayrıca yeni bir e-posta/şifre kullanıcısı oluşturabilirim. Bir e-posta/şifre kullanıcıya isimsiz kullanıcı dönüştürmek isterken Ama hata alıyorum: https://firebase.google.com/docs/auth/web/anonymous-authFirebase Anonim Kullanıcı Hesabına Kalıcı Hesabı Dönüştürme Hata

:

auth/provider-already-linked 
User can only be linked to one identity for the given provider. 

Firebase bölümünde burada prosedürü belgeleyen burada "kalıcı bir hesaba anonim hesap dönüştür" İşte hesap bağlantı kodu. Anonim kullanıcı içinde imzalanır.

return firebase.auth().createUserWithEmailAndPassword(email, password).then(newUser => { 

    // Credential is being successfully retrieved. Note "any" workaround until typescript updated. 
    let credential = (<any>firebase.auth.EmailAuthProvider).credential(email, password); 

    firebase.auth().currentUser.link(credential) 
     .then(user => { return user; }) 
     .catch(err => console.log(err)); // Returns auth/provider-already-linked error. 
}); 

cevap

11

anonim kullanıcı yükseltmek için createUserWithEmailAndPassword çağırmamalıdır. Bu, anonim bir kullanıcıda imzalı olarak oturum açarak yeni bir kullanıcı oluşturacak.

İhtiyacınız olan tek şey kullanıcının e-postası ve şifresidir. Aksine, IDP sağlayıcıları (ör. Google, Facebook), kullanıcıları tanımlamak için jetonlarını almak için akıştaki tam oturumlarını tamamlamaları gerekir. Bunlar için linkWithPopup veya linkWithRedirect'u kullanmanızı öneririz.

Örnek:

// (Anonymous user is signed in at that point.) 

// 1. Create the email and password credential, to upgrade the 
// anonymous user. 
var credential = firebase.auth.EmailAuthProvider.credential(email, password); 

// 2. Links the credential to the currently signed in user 
// (the anonymous user). 
firebase.auth().currentUser.linkWithCredential(credential).then(function(user) { 
    console.log("Anonymous account successfully upgraded", user); 
}, function(error) { 
    console.log("Error upgrading anonymous account", error); 
}); 

bana eğer inşaat bildirin!

+2

firebase.User.prototype.link kullanımdan kaldırılmıştır. Bunun yerine firebase.User.prototype.linkWithCredential kullanın. –

+0

Teşekkürler, güncellendi! – TMSCH

+1

Bu yanıt için teşekkürler - Firebase'i kullanarak istemci mobil uygulamalarında aynı mantık geçerlidir. Bir iOS uygulamasında aynı sorunu yaşıyordum ve bu mantık düzeltildi. Bununla ilgili Firebase dokümanları çok net değil - bunu vurgulamalıdırlar (Google'dan bunu okuyanlar varsa). – Peza

İlgili konular