【问题标题】:how to integrate firebase in webapp using android firebase database?如何使用 android firebase 数据库将 firebase 集成到 webapp 中?
【发布时间】:2018-02-10 14:15:48
【问题描述】:

android 数据库已创建,我想使用 html 页面对其进行身份验证。 下面给出了它不工作的代码。 这里基本上我们有一个 html 登录页面和脚本来从基于火的数据库对其进行身份验证。提供解决方案代码或我的代码有什么问题或其中缺少的东西。

 <!DOCTYPE html>
    <html>
    <head>

    <!-- /////////////////firebase method ///////////////////// -->
    <title>
      the login form
    </title>

    <script src="https://www.gstatic.com/firebasejs/4.9.1/firebase.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.9.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.9.0/firebase-auth.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.9.0/firebase-database.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.9.0/firebase-firestore.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.9.0/firebase-messaging.js"></script>

    <script>
      // Initialize Firebase
      var config = {
        apiKey: "AIzaSyBgFUWzUrmLXVuKtGtChe2I2zvf5sYga54",
        authDomain: "skool-1083c.firebaseapp.com",
        databaseURL: "https://skool-1083c.firebaseio.com",
        projectId: "skool-1083c",
        storageBucket: "skool-1083c.appspot.com",
        messagingSenderId: "911580445409"
      };
      firebase.initializeApp(config);
    </script>

    </head>
    <body>

    <h1>Admin Login</h1>
    <form class="form" action="new_blank">
    <input type="text" placeholder="username" id="email"autofocus><br>
    <input type="password" placeholder="pasword" id="password" ><br></br>
    <input type="submit" value="login" id="sign-in"> 
    <br>



    </form>
    <!-- ///////////////stylesheet///////////// -->


     <script>    
        document.querySelector('#sign-in').addEventListener('click', function(e) {
          e.preventDefault();
          e.stopPropagation();
          var email = document.querySelector('#email').value;
          var password = document.querySelector('#password').value
          var credential = firebase.auth.EmailAuthProvider.credential(email, password);

          window.alert(credential);
            var auth = firebase.auth();
          var currentUser = auth.currentUser;

          // Step 2
          //  Get a credential with firebase.auth.emailAuthProvider.credential(emailInput.value, passwordInput.value)
          //  If there is no current user, log in with auth.signInWithCredential(credential)
          //  If there is a current user an it's anonymous, atttempt to link the new user with firebase.auth().currentUser.link(credential) 
          //  The user link will fail if the user has already been created, so catch the error and sign in.
        });
        </script>
    </body>

    </html>

【问题讨论】:

  • @PeterHaddad 我已经制作了 firebase 数据库,我想首先在这个网页中使用我想使用电子邮件和密码进行身份验证。
  • 你使用的规则是什么?

标签: javascript firebase web-applications firebase-authentication


【解决方案1】:

如果您想在 Firebase 身份验证中使用电子邮件+密码登录用户,请遵循文档 here。从那里登录的示例是:

firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

要检测用户何时登录,请遵循文档here。从那里:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});

【讨论】:

  • 实际上我首先在 android 中添加了项目...因此 android 徽标显示在项目上,但是当在 firebase 仪表板的项目概述中添加另一个应用程序(即 Web 应用程序)时,它只是向我展示添加项目和网站徽标,即 > 未显示......我认为这是我无法访问 firebase 数据库的问题
  • 您分享的代码是关于身份验证的,但不会让用户登录。我的回答显示了如何正确执行此操作。您共享的代码都不会访问数据库,因此很难提供帮助。查看how to ask,了解如何提高我们为您提供实际帮助的机会。
  • 我只是想知道使用相同用户名和密码的身份验证将如何访问我的网页代码......我已经完成了android身份验证码......谢谢您的回复
【解决方案2】:

在 app/build.gradle 中实现 firebase 身份验证

implementation 'com.google.firebase:firebase-auth:18.1.0'
implementation 'com.google.firebase:firebase-database:18.0.1'

在此功能中使用输入的用户名和密码

private void login() {
            FirebaseAuth firebaseAuth=FirebaseAuth.getInstance();
            firebaseAuth.signInWithEmailAndPassword(usrId, usrPass).addOnCompleteListener(loginActivity.this, new OnCompleteListener() {
                @Override
                public void onComplete(@NonNull Task task) {
                    if (!task.isSuccessful()) {
                        Toast.makeText(loginActivity.this, "Not sucessfull", Toast.LENGTH_SHORT).show();
                    } else {
                        startActivity(new Intent(loginActivity.this, MainActivity.class));
                    }
                }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多