我有一个小型网站,用户可以在其中使用电子邮件和密码登录Firebase。
我使用以下代码:
<script>
function SignUpWithMailPSW(email,pswRdmSeq) {
....
firebase.auth().createUserWithEmailAndPassword(email, pswRdmSeq).then(function(user) {
....
}
... useful things irrelevant to the question.
}
</script>
现在,用户还可以使用Facebook登录。
首先,我找到了这个文档。为了进行实验,我根据我读到的内容做了一些事情,只是一个小的测试页面。这是代码:
<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html; CHARSET=UTF-8">
<script src="https://www.gstatic.com/firebasejs/6.3.5/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.3.5/firebase-auth.js"></script>
</HEAD>
<BODY>
<script>
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "ABCDEF-APIKEY-12345",
authDomain: "myapp.firebaseapp.com",
databaseURL: "https://myapp.firebaseio.com",
projectId: "myapp",
storageBucket: "myapp.appspot.com",
messagingSenderId: "123456789",
appId: "1:987654321:web:xy2122k98xyxy8988"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
</script>
<b>TEST ONLY PAGE !!!</b>
<script>
var provider = new firebase.auth.FacebookAuthProvider();
function SignUpWithFB() {
// var provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().signInWithPopup(provider).then(function(result) {
// 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;
// ...
}).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;
// ...
});
}
SignUpWithFB();
</script>
<b>TEST ONLY PAGE !!!</b>
</BODY>
</HTML>
在这一点上,它开始工作。
但是我想知道如何使用我们在回调函数(或承诺?
firebase.auth().signInWithPopup(provider).then(function(result) {});
我没有发现这个结果变量的任何重要内容(类型、字段、使用、..等等。搜索网络。
一些提示将非常有用。
你在 promise 的then部分得到的结果变量是一个对象(类型(,其中包含有关用户的所有信息。并且本身包含许多属性,使用这些属性您可以非常轻松地获取所有这些数据。
列举几个重要的
显示名称- :提供用户的显示名称
- 电子邮件:为您提供用户的电子邮件 ID 电子邮件
- 已验证:告诉您电子邮件ID是否已验证
- 元数据:本身是一个包含 LastSignInTime 和 creationTime 等信息的对象
- photoURL:用户图片的URL,当前图片。
- uid:(非常有用(与每个用户相关联的唯一ID,这将允许您提前进行许多身份验证。
注意:要列出并检查所有这些属性,请尝试在控制台中输出 console.log(result);
signInWithPopup
方法声明为:
signInWithPopup(provider: AuthProvider): Promise<UserCredential>
所以它返回Promise<UserCredential>
.这意味着在then
回调中,您将获得一个UserCredential
对象,该对象声明为:
Optional additionalUserInfo?: AdditionalUserInfo | null credential: AuthCredential | null Optional operationType?: string | null user: User | null
所以它有user
和credential
属性,也可能有additionalUserInfo
和operationType
。
有关其中每个方面的更多信息,请继续按照参考文档中的链接进行操作。