www.91084.com

GVKun编程网logo

登录后 Firebase 将文档存储到变量(firewalld保存规则)

14

如果您对登录后Firebase将文档存储到变量和firewalld保存规则感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解登录后Firebase将文档存储到变量的各种细节,并对firewalld

如果您对登录后 Firebase 将文档存储到变量firewalld保存规则感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解登录后 Firebase 将文档存储到变量的各种细节,并对firewalld保存规则进行深入的分析,此外还有关于Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践?、android – Firebase电话身份验证凭据链接与firebase中的Google登录、android – 为什么firebase用户在从firebase仪表板中删除后仍然登录、android-FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2的实用技巧。

本文目录一览:

登录后 Firebase 将文档存储到变量(firewalld保存规则)

登录后 Firebase 将文档存储到变量(firewalld保存规则)

如何解决登录后 Firebase 将文档存储到变量?

我正在尝试为我的网站做后端,我已经登录、注册、重置密码等一切正常。我现在想要做的是当用户登录或注册时,AuthContext 检查与他的 UID 匹配的文件,如果存在,则将其存储到变量,或者如果不存在,则创建它并将其存储到变量。只是不能让它工作。到目前为止,我得到的最好的是底部的代码,但问题是当我注销用户时,我收到各种错误,因为用户不再存在。

到目前为止,我的上下文文件看起来像这样,一切正常:

import { createContext,useContext,useEffect,useState } from "react";
import { auth,db } from "../firebase";

export const AuthContext = createContext();

export const useAuth = () => {
  return useContext(AuthContext);
};

const AuthContextProvider = ({ children }) => {
  const [currentUser,setCurrentUser] = useState(null);
  const [currentUserDoc,setCurrentUserDoc] = useState(null);

  const [loading,setLoading] = useState(true);

  const signup = (email,password) => {
    return auth.createuserWithEmailAndPassword(email,password);
  };

  const login = (email,password) => {
    return auth.signInWithEmailAndPassword(email,password);
  };

  const logout = () => {
    return auth.signOut();
  };

  const resetPassword = (email) => {
    return auth.sendPasswordResetEmail(email);
  };

  useEffect(() => {
    const unsubscribe = auth.onAuthStateChanged((user) => {
      setCurrentUser(user);
      setLoading(false);
    });

    return unsubscribe;
  },[]);

  const value = { currentUser,currentUserDoc,signup,login,logout,resetPassword };

  return <AuthContext.Provider value={value}>{!loading && children}</AuthContext.Provider>;
};

export default AuthContextProvider;

我尝试将 useEffect 挂钩更改为此,但无法正确完成:

 useEffect(() => {
    const unsubscribe = auth.onAuthStateChanged(async (user) => {
      setCurrentUser(user);

      const userDoc = db.collection("users").doc(user.uid);
      
      await userDoc.get().then((doc) => {
        if (doc.exists) {
          setCurrentUserDoc(doc.data());
        } else {
          doc.set({
            email: user.email,first_name: "",last_name: "",country: "",organization: "",});
        }
      });

      setLoading(false);
    });

    return unsubscribe;
  },[]);

当没有用户登录时,这是错误的:

this is problem when i am logged out

我尝试使用它的代码:

import styles from "./Header.module.scss";

import { useAuth } from "../../contexts/AuthContext";

const Header = () => {
  const { logout,currentUserDoc } = useAuth();

  return (
    <header className={styles.header}>
      <div></div>
      <div className={styles.header__user}>
        {currentUserDoc.email}
        <button onClick={logout}>Log out</button>
      </div>
    </header>
  );
};

export default Header;

解决方法

onAuthStateChanged 观察者将在用户登录或注销时触发。如果用户已注销,user 对象将为 null,因此您将收到错误 "TypeError: Cannot read property ''uid'' of null"。您应该检查用户是否仍在身份验证观察器中登录。

const unsubscribe = auth.onAuthStateChanged(async (user) => {
  // Check if user is present (logged in) or absent (logged out)
  if (!user) {
    // user has logged out
    console.log("No User")
  } else {
    // Add the required documents
    setCurrentUser(user);

    const userDoc = db.collection("users").doc(user.uid);
    const doc = await userDoc.get()
    if (doc.exists) {
      setCurrentUserDoc(doc.data());
    } else {
      await userDoc.set({
        email: user.email,first_name: "",last_name: "",country: "",organization: "",});
    }
  }
})

Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践?

Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践?

如何解决Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践??

Android 上的基本用户登录/注册场景,使用 viewmodel 处理 LiveData。我使用 Firebase Auth 进行身份验证,使用 Cloud Firestore 用于 Cloud DB 和 Firebase Storage 用于存储图像。假设在注册期间用户提供了个人资料图片,我带来的工作流程是:(注册)

  • firebaseAuth.createuserWithEmailAndPassword()
  • 将图片保存到存储并获取下载地址
  • 将用户数据放入 Cloud Firestore 数据库(以图片 url 作为字段)
  • 更新 firebase 用户的 photoUrl 字段
  • 使用登录用户更新 viewmodel

这些任务按此特定顺序依次执行,以实现对数据库的持久性。 一个任务(第一个任务除外)仅在前一个任务成功完成(使用 OnSuccessListener)后运行,如果其中任何一个任务失败,则删除 firebase 用户,并且 viewmodel 更新错误。 这个实现的问题是非常慢,因为每个任务都需要等待前一个任务完成,这会减慢注册实体的过程,但我认为这是必要的,以避免非持久性数据(例如,图像可能未加载但用户保存在云 Firestore 中,然后 viewmodel 更新,但没有图像导致空指针异常 ecc...)。所以我要问的是:有更好的方法来处理这个问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android – Firebase电话身份验证凭据链接与firebase中的Google登录

android – Firebase电话身份验证凭据链接与firebase中的Google登录

我已经在我的应用程序中使用firebase身份验证实现了两步身份验证,其中我使用gmail,facebook或简单的电子邮件登录进行身份验证.由于数字电话验证已迁移到firebase,我已通过将现有登录帐户(Facebook,gmail或电子邮件)与电话身份验证凭据相关联来实施firebase电话身份验证.与Facebook和电子邮件帐户一起使用时,它工作正常.当用户通过谷歌登录并尝试通过电话验证验证移动设备时,将打印以下日志:

signInWithCredential:failure

com.google.firebase.auth.FirebaseAuthUserCollisionException: An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address.

阅读本article.是否与article中提到的问题相同?有没有相同的解决方案..

解决方法

在通过互联网和firebase文档本身进行研究之后,我使用firebase auth在app中找到了这个两步验证的解决方案.

firebaseAuth.getCurrentUser().updatePhoneNumber(credential).addOnCompleteListener(this,new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                Log.d(TAG,"signInWithCredential:success");

                Snackbar.make(findViewById(android.R.id.content),"Mobile Verified Successfully.",Snackbar.LENGTH_SHORT).show();

            } else {
                Log.w(TAG,"signInWithCredential:failure",task.getException());
                if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
                    //mVerificationField.setError("Invalid code.");
                    Snackbar.make(findViewById(android.R.id.content),"Invalid Code.",Snackbar.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(context,"signInWithCredential:failure"+task.getException(),Snackbar.LENGTH_LONG).show();
                }
            }
        }
    });

只需将PhoneAuthCredential传递给上述方法,它就会验证手机是否已分配给您现有的帐户.确保任何其他帐户都不使用它.

PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId,code);

android – 为什么firebase用户在从firebase仪表板中删除后仍然登录

android – 为什么firebase用户在从firebase仪表板中删除后仍然登录

我使用Firebase Quickstarts for Android Auth示例,然后我在firebase仪表板中创建了一个用户,使用电子邮件和密码登录用户,用户成功登录.
但是当我删除用户时,它仍然登录并显示旧用户的电子邮件(user.getEmail())

// [START auth_state_listener]
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getEmail());
            } else {
                // User is signed out
                Log.d(TAG, "onAuthStateChanged:signed_out");
            }
            // [START_EXCLUDE]
            updateUI(user);
            // [END_EXCLUDE]
        }
    };
    // [END auth_state_listener]

我的firebase仪表板中的用户和AuthStateListener都没有用户登录的用户.

怎么可能呢?

解决方法:

删除帐户不会自动使该帐户的当前会话失效.他们目前的会议将一直有效,直到他们到期.您可以在Firebase信息中心中设置会话到期时间间隔.

如果你想要force the user to be logged out,请调用ref.unauth().

但一般情况下,您可能希望构建授权规则,以防止具有已删除帐户的有效令牌的用户对数据进行更改.

当用户更新其电子邮件,密码或重置其密码时. Firebase Auth后端撤销其令牌,要求他们重新进行身份验证或尝试重新登录.这是一项安全功能.例如,如果用户的帐户遭到入侵,用户可能会重置密码.所有其他会话必须重新进行身份验证.

如果将用户配置文件保留在数据库中,则可以检查安全规则中是否仍存在该记录:root.child(‘users’).child(auth.uid).exists().

另见:

> Firebase authentication not revoked when user deleted?
> Deletion of User in firebase does not trigger onAuth method

android-FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2

android-FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2

我试图按照here给出的指南使用Firebase Cloud Messaging编写应用程序,但我为添加实现FCM的依赖项而感到惊讶(com.google.firebase:firebase-core:9.0.2).每次我尝试通过项目结构添加它时,它都不会在搜索结果中列出依赖项.当我尝试将其添加到应用程序级别gradle中时,它给我一个错误,导致无法解决依赖关系.我不知道我要去哪里错了,但是请帮我解决这个问题.

解决方法:

从您的SDK管理器下载更新.我遇到过同样的问题.从SDK经理更新Google Play服务和Google Repository对我来说很有效.

今天关于登录后 Firebase 将文档存储到变量firewalld保存规则的分享就到这里,希望大家有所收获,若想了解更多关于Android Firebase 身份验证、Cloud Firestore、Firebase 存储、注册个人资料图片用例的最佳实践?、android – Firebase电话身份验证凭据链接与firebase中的Google登录、android – 为什么firebase用户在从firebase仪表板中删除后仍然登录、android-FIrebase Cloud Messaging,无法解析依赖项com.google.firebase:firebase-core:9.0.2等相关知识,可以在本站进行查询。

本文标签: