ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

firebaseui.js未捕获的TypeError:无法读取未定义的属性“ call”

2019-10-25 10:33:28  阅读:242  来源: 互联网

标签:firebaseui firebase firebase-authentication javascript


我正在尝试使用Google’s official documentation on Github在我的应用程序上添加Firebase ui auth.

电子邮件登录工作正常,但电话登录选项出现问题.

点击电话登录并输入6位数字代码后,我将无法登录或登录.

enter image description here

圆形加载循环不断旋转,并且不会将我重定向到main.js中定义的signInSuccessUrl.

我在控制台中收到的错误是这样的:

firebaseui.js:82 Uncaught TypeError: Cannot read property 'call' of undefined
    at Ca (firebaseui.js:82)
    at Fl (firebaseui.js:323)
    at firebaseui.js:324
    at firebaseui.js:281
    at El.<anonymous> (firebaseui.js:238)
    at oe (firebaseui.js:140)
    at ne (firebaseui.js:139)
    at ni (firebaseui.js:219)
    at li.h (firebaseui.js:219)
    at le (firebaseui.js:136)
Ca @ firebaseui.js:82
Fl @ firebaseui.js:323
(anonymous) @ firebaseui.js:324
(anonymous) @ firebaseui.js:281
(anonymous) @ firebaseui.js:238
oe @ firebaseui.js:140
ne @ firebaseui.js:139
ni @ firebaseui.js:219
li.h @ firebaseui.js:219
le @ firebaseui.js:136
he @ firebaseui.js:137
b @ firebaseui.js:134

我的index.html

<!DOCTYPE html>
<html>
<head>
    <title>Site Web flow</title>
    <link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/2.6.0/firebaseui.css" />

</head>
<body>

    <h1>Site Web flow</h1>
    <div id="firebaseui-auth-container"></div>
    <hr>
    <div>
        <div id="loader">Loading...</div>
        <div id="sign-in-status"></div>
        <div id="sign-in"></div>
        <div id="account-details"></div>
        <button id="signOutButton">Signout</button>
    </div>
    <script src="https://cdn.firebase.com/libs/firebaseui/2.6.0/firebaseui.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.9.1/firebase.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.9.1/firebase-firestore.js"></script>
    <script src="main.js"></script>
</body>
</html>

我的main.js文件:

let config = {
    apiKey: '##',
    authDomain: '##',
    projectId: '##'
};

firebase.initializeApp(config);

const db = firebase.firestore();
// const auth = firebase.auth();

let uiConfig = {
    signInOptions: [ 
        {
            provider: firebase.auth.EmailAuthProvider.PROVIDER_ID,
            requireDisplayName: true
        },
        {
            provider: firebase.auth.PhoneAuthProvider.PROVIDER_ID,
            defaultCountry: 'IN'
        }
    ],

    signInSuccessUrl: './success.html',
    tosUrl: '#',
    callbacks: {
        signInSuccess: (currentUser, credential, redirectUrl) => {
            return true;
        },
        signInFailure: (error) => {
            return handleUIError(error);
        },
        uiShown: () => {
            document.getElementById('loader').style.display = 'none';
        }
    }
};


// Initialize the FirebaseUI Widget using Firebase.
let ui = new firebaseui.auth.AuthUI(firebase.auth());

// The start method will wait until the DOM is loaded.
ui.start('#firebaseui-auth-container', uiConfig);
ui.disableAutoSignIn();


initApp = function() {
    firebase.auth().onAuthStateChanged(function(user) {
        if (user) {
            // User is signed in.
            let displayName = user.displayName;
            let email = user.email;
            let emailVerified = user.emailVerified;
            let photoURL = user.photoURL;
            let uid = user.uid;
            let phoneNumber = user.phoneNumber;
            let providerData = user.providerData;
            user.getIdToken().then(function(accessToken) {
                document.getElementById('sign-in-status').textContent = 'Signed in';
                document.getElementById('sign-in').textContent = 'Sign out';
                document.getElementById('account-details').textContent = JSON.stringify({
                    displayName: displayName,
                    email: email,
                    emailVerified: emailVerified,
                    phoneNumber: phoneNumber,
                    photoURL: photoURL,
                    uid: uid,
                    accessToken: accessToken,
                    providerData: providerData
                }, null, '  ');
            });
        } else {
            // User is signed out.
            document.getElementById('sign-in-status').textContent = 'Signed out';
            document.getElementById('sign-in').textContent = 'Sign in';
            document.getElementById('account-details').textContent = 'null';
        }
    }, function(error) {
        console.log(error);
    });
};

window.addEventListener('load', function() {
    initApp()
});


document.getElementById('signOutButton').addEventListener('click', (e) => {
    e.preventDefault();
    firebase.auth().signOut().then(() => {
        console.log('Signed out');
    })
})

我确实在Firebase控制台中启用了通过电子邮件和电话登录.有人可以帮忙吗?

解决方法:

FirebaseUI 2.6.0中的电话号码登录流程中存在错误. https://github.com/firebase/firebaseui-web/issues/314.我们已修复并发布2.6.1.遇到相同问题的任何人,请将firebaseUI更新到最新版本2.6.1.

标签:firebaseui,firebase,firebase-authentication,javascript
来源: https://codeday.me/bug/20191025/1928156.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有