【发布时间】:2016-10-22 18:25:47
【问题描述】:
我在一个学校项目中使用 Firebase,但我有一段时间遇到同样的问题......我查看了各种网站,但找不到任何有同样问题的人......
用户身份验证工作正常,但问题在于将用户数据保存在数据库中。 我有两种可用的身份验证方式:
- 邮箱和密码;
- 脸书。
使用邮箱和密码,数据成功写入数据库,我正在使用以下 JavaScript 代码:
function signUp(){
//Get DOM data
const email = String(document.getElementById('TXTEmail').value);
const pass = String(document.getElementById('TXTPassword').value);
const name = String(document.getElementById('TXTNome').value);
const gender = document.registo.sexo.value;
const auth = firebase.auth();
var promise = auth.createUserWithEmailAndPassword(email,pass);
promise.catch(e => console.log(e.message));
firebase.database().ref('users/' + firebase.auth().currentUser.uid).set({
name : name,
email : email,
gender : gender,
uid: firebase.auth().currentUser.uid
});
}
但是,使用facebook的功能时无法保存数据,只能认证用户,我使用的代码如下:
function signUpFacebook(){
var provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().signInWithRedirect(provider);
firebase.auth().getRedirectResult().then(function(result) {
if (result.credential) {
// This gives you a Facebook Access Token. You can use it to access the Facebook API.
var token = result.credential.accessToken;
}
// The signed-in user info.
var user = result.user;
const name = user.displayName;
const email = user.email;
const photo = user.photoURL;
if(user != 0) {
firebase.database().ref('users/' + user.uid).set({
name: nome,
email: email,
photo: photo,
uid: user.uid
});
}
//Tests only
if(user != 0){
console.log("name: "+user.displayName);
console.log("email: "+user.email);
console.log("photoUrl: "+user.photoURL);
console.log("uid: "+user.uid);
}
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// The email of the user's account used.
var email = error.email;
// The firebase.auth.AuthCredential type that was used.
var credential = error.credential;
});
}
我在控制台上得到了这个输出: Console output.
name: Rafael Veloso
email: rafael****@gmail.com
photoUrl: scontent.xx.fbcdn.net/v/t1.0-1/s100x100/…
uid: **HY43Tl******KoO6OhZjG****
另外,我的 database.rules.json 是:
{
"rules": {
".read": true,
".write": true
}
}
有人知道我遇到了什么问题吗? 谢谢。
【问题讨论】:
-
请将控制台输出作为实际文本发布,而不是图片。不允许您发布图片的原因有很多,这就是其中之一。
-
对不起@FrankvanPuffelen,输出是:姓名:Rafael Veloso 电子邮件:rafael****@gmail.com photoUrl:scontent.xx.fbcdn.net/v/t1.0-1/s100x100/… uid:**HY43Tl******KoO6OhZjG** ***
标签: javascript firebase firebase-realtime-database firebase-authentication