Tôi đang thực hiện một đăng nhập với căn cứ hỏa lực (v3) Auth và tôi trúng vấn đề này:đăng nhập căn cứ hỏa lực với nhà cung cấp mới (Google) loại bỏ nhà cung cấp trước đó (mật khẩu)
- dấu hiệu tài khoản lên ban đầu với email và mật khẩu .
- Đăng xuất.
- Sau đó, đăng nhập bằng Google.
Tôi mong đợi một lỗi phàn nàn rằng địa chỉ email được sử dụng cho một tài khoản khác, sau đó yêu cầu người dùng nhập mật khẩu để liên kết tài khoản, nhưng thay vào đó Firebase sẽ tự động xóa đăng nhập email/mật khẩu và trả về một thông báo thành công.
Mã để xác thực với Google:
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then(
result => {
console.log("federated (google) result", result);
},
error => {
console.log("federated (google) error", error);
}
);
Mã để xác thực với email và mật khẩu:
// Login:
firebase.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(
ok => {
console.log("email/pass sign in success", ok);
},
error => {
console.log("email/pass sign in error", error);
}
)
// Register:
firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password).then(
ok => {
console.log("Register OK", ok);
},
error => {
console.log("Register error", error);
}
)
tôi thấy in the guide rằng liên kết tài khoản được thực hiện bằng hợp đồng đầu tiên ở một người sử dụng với nhà cung cấp hiện tại của họ/Phương thức và chỉ sau đó yêu cầu thông tin đăng nhập/nhận mã thông báo cho phương thức/nhà cung cấp xác thực mới. Trong trường hợp của tôi, tôi không biết nếu họ có các nhà cung cấp xác thực khác cho đến khi quá muộn (Firebase sẽ ghi đè nó).
Có cách nào để phát hiện email đã được thực hiện trước khi Firebase ghi đè chi tiết của tài khoản đã tồn tại và yêu cầu người dùng nhập mật khẩu của họ và liên kết các tài khoản không? Hoặc, thậm chí tốt hơn, hãy liên kết các tài khoản tự động vì chúng đã đăng nhập bằng Google và địa chỉ email khớp nhau?
Vì Firebase 3 cho phép bạn đăng nhập bằng các mchanisms khác nhau .. bạn có thể muốn kết hợp các cơ chế khác nhau với nhau để có chế độ xem thống nhất. Tham khảo https://firebase.google.com/docs/auth/android/account-linking – ErstwhileIII
Chính xác. Tôi muốn liên kết các cơ chế khác nhau nhưng cụ thể vấn đề (hoặc nhầm lẫn, xem câu trả lời) là những gì xảy ra khi người dùng đã có tài khoản với cơ chế A (nói email/mật khẩu) và lần sau anh ghé thăm, quên nó và đăng nhập với phương pháp B (nói Google). Địa chỉ email giống nhau, vì vậy các tài khoản sẽ được liên kết tự động (như lập trình bạn không biết có tài khoản với email đó đã có trong quá trình đăng nhập) hoặc đăng nhập sẽ trả về lỗi để bạn có thể đặt một số thông tin đăng nhập để giải quyết vấn đề này. Tôi đã viết trong câu trả lời của tôi những gì thực sự xảy ra. –