在Firebase上注册后,通过Facebook使用网页

时间:2019-08-10 10:34:17

标签: javascript facebook firebase firebase-authentication facebook-authentication

我有一个小型网站,用户可以在其中使用电子邮件和密码在Firebase上登录。

我使用以下代码:

<script>

function SignUpWithMailPSW(email,pswRdmSeq) {
    ....
    firebase.auth().createUserWithEmailAndPassword(email, pswRdmSeq).then(function(user) {
        ....
    }
    ... useful things irrelevant to the question.
}

</script>

现在用户也可以使用Facebook登录。

要开始使用,我发现了this document。为了进行实验,我根据阅读的内容做了一些操作,只是一个很小的测试页。这是代码:

<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>

这时它开始起作用。

但是我想知道如何利用我们在回调函数(或promise?)中得到的 result (和 result.credential )参数。 :

firebase.auth().signInWithPopup(provider).then(function(result) {});

我没有发现关于此结果变量(网络,类型,字段,用途等)的任何重要信息。

一些提示会非常有用。

2 个答案:

答案 0 :(得分:1)

您在promise的 then 部分中获得的 结果 变量是 object (类型)保存有关用户的所有信息。并且本身包含许多属性,使用它们可以非常轻松地获取所有这些数据。

命名一些重要的

  • displayName :为您提供用户的显示名称
  • 电子邮件:为您提供用户的电子邮件ID
  • emailVerified :告诉您是否已验证电子邮件ID
  • 元数据:本身是包含诸如LastSignInTime和creationTime之类的信息的对象
  • photoURL :指向用户图片(当前图片)的URL。
  • uid :(非常有用)与每个用户相关联的唯一ID,这将使您提前进行很多身份验证。

注意:要列出并检查所有这些属性,请尝试在控制台中输出   console.log(result);

答案 1 :(得分:0)

signInWithPopup method被声明为:

signInWithPopup(provider: AuthProvider): Promise<UserCredential>

因此它返回Promise<UserCredential>。这意味着在您的then回调中,您会得到一个UserCredential object,它声明为:

Optional additionalUserInfo?: AdditionalUserInfo | null
credential: AuthCredential | null
Optional operationType?: string | null
user: User | null

因此它具有usercredential属性,并且可能也具有additionalUserInfooperationType

有关这些信息的更多信息,请继续关注参考文档中的链接。