即使在注册流程中对用户进行了身份验证,如何解决Firebase“用户未授权”错误?

吉姆

我正在尝试使用react-native-firebase在一个react-native应用程序的一个调用中执行多种firebase操作。流程如下所示:

  • 在身份验证中创建用户
  • 发送图像到存储
  • 将数据发送到Firestore

在图像存储阶段,该imgRef.putFile()函数会错误地指出用户未被授权。但是,im正在使用createUserWithEmailAndPassword()(完成时对用户进行身份验证),然后使用返回的凭据来完成其余的工作,图像存储和Firestore创建。

Firebase存储规则设置为仅允许经过身份验证的用户。这是规则集:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

另外,我在身份验证方法中启用了匿名登录。

这是直到错误点的初始操作:

return (dispatch) => {
        dispatch({ type: types.REGISTER_USER });
        console.log('starting registration process...');
        firebase
            .firestore()
            .collection('users')
            .where('username', '==', username)
            .get()
            .then((querySnapshot) => {
                console.log(querySnapshot);
                if (querySnapshot.empty !== true) {
                    registrationFail(dispatch, 'Username already taken. Try again.');
                    console.log("Registrant's username already exists");
                } else {
                    console.log('Registrants username is unique');
                    firebase
                        .auth()
                        .createUserWithEmailAndPassword(email, pass)
                        .then((userCredential) => {
                            uploadImg(dispatch, img, userCredential.user.uid)

这是uploadImg()函数:

const uploadImg = async (dispatch, uri, uid) => {
    console.log('Starting image upload...');
    dispatch({ type: types.UPLOAD_IMG, info: 'Uploading profile image...' });
    const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri;
    const imgRef = firebase.storage().ref('profile-images').child(uid);
    return imgRef
        .putFile(uploadUri, { contentType: 'image/png' })
        .then((success) => {
            console.log('profile image upload successful.')
            return imgRef;
        })
        .catch((err) => {
            console.log('profile image upload failed: ' + err)
            uploadImgFail(dispatch, err.message);
        });
};

再次,在控制台中记录的错误是:

个人资料图片上传失败:错误:用户无权执行所需的操作。

firebase.auth().currentUseruploading()函数成功返回当前用户对象之前记录正确的权限

尽管我针对给定集合的安全规则集为:

match /databases/{database}/documents {
    match /users/{uid} {
      // allow new user to check phone numbers
      allow read: if true
      allow update, create: if request.auth != null 
      allow delete: if request.auth.uid == uid
    }
 }

这是我的注册流程的一部分。我收集输入,将相关数据发送到redux动作,创建一个用户,一旦创建了该用户,便向Firestore中的文档添加了一些数据。这没有任何意义。即时通讯参考文档,它仍然无法正常工作。

如何解决?

卢卡斯

firebase似乎有一个问题,您必须先注销用户一次,然后才能在创建用户后登录。我遇到了同样的问题,这是我的解决方法:

     firebase.auth().signInWithEmailAndPassword(userEmail,userPass).catch((error) => {
                /*console.log('Could not log in user');*/
                console.log(error);
                firebase.auth().createUserWithEmailAndPassword(userEmail,userPass).catch((error) => {
                    /*console.log('Could not create user');*/
                    console.log(error);
                }).then(result => {
                        firebase.auth().signOut().then(() => {
                            firebase.auth().signInWithEmailAndPassword(userEmail,userPass).then(result => {
                                /*console.log("here is you logged in user");*/
                            })
                        });
                    });
                });
            });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何知道用户是否通过 firebase 的第一个请求进行了身份验证

来自分类Dev

我应该如何检查用户是否在MVC5中进行了身份验证?

来自分类Dev

错误:7 PERMISSION_DENIED:您的应用已使用Google Cloud SDK中的最终用户凭据进行了身份验证

来自分类Dev

检查用户是否在不安全的路由上进行了身份验证

来自分类Dev

使用社交身份验证时,如何区分新注册的用户和Firebase中的注册用户?

来自分类Dev

如何注册将对域用户进行身份验证的HttpClient

来自分类Dev

哪些OpenID Connect授权流程可对移动应用程序用户进行身份验证?

来自分类Dev

Flask-Login检查是否在没有装饰器的情况下对用户进行了身份验证

来自分类Dev

在Azure AD中如何为特定区域的用户进行身份验证和授权?

来自分类Dev

REST API上的用户注册/身份验证流程

来自分类Dev

LoginController 未对用户进行身份验证

来自分类Dev

如何在yubikey python中为注册用户进行身份验证

来自分类Dev

使用MEAN Stack进行用户注册和身份验证/授权

来自分类Dev

如何使用 firebase sdk 对用户进行身份验证

来自分类Dev

如何使用 ChatSDK 对 Firebase 用户进行身份验证?

来自分类Dev

Firebase 用户注册/用户名身份验证

来自分类Dev

当我的用户对我的对象进行身份验证时,将其正确,但如果未经身份验证,我的对象将变为假。我该如何解决?

来自分类Dev

如何使用Google用户名进行身份验证。点亮Firebase身份验证

来自分类Dev

客户端检查是否在Firebase中进行了身份验证

来自分类Dev

多个用户进行身份验证和授权

来自分类Dev

如何仅在Firebase 3中创建用户而不进行身份验证?

来自分类Dev

如何通过Swift中的Firebase Twitter方法对Digits用户进行身份验证?

来自分类Dev

Azure AD 身份验证错误:用户取消了流程

来自分类Dev

如何在Firebase中管理用户的不同身份验证

来自分类Dev

使用 Android 进行 Firebase 电子邮件和密码身份验证 - 用户注册

来自分类Dev

如何在 AWS 自定义授权方中对用户进行身份验证?

来自分类Dev

我进行了用户身份验证,并且在localhost中正常运行,但是在服务器上出现此错误::找不到类'\ app \ models \ User'

来自分类Dev

客户端身份验证方案“匿名”对HTTP请求进行了未经授权的访问(通过C#基本身份验证写入)

来自分类Dev

WCF用户身份验证和授权

Related 相关文章

  1. 1

    如何知道用户是否通过 firebase 的第一个请求进行了身份验证

  2. 2

    我应该如何检查用户是否在MVC5中进行了身份验证?

  3. 3

    错误:7 PERMISSION_DENIED:您的应用已使用Google Cloud SDK中的最终用户凭据进行了身份验证

  4. 4

    检查用户是否在不安全的路由上进行了身份验证

  5. 5

    使用社交身份验证时,如何区分新注册的用户和Firebase中的注册用户?

  6. 6

    如何注册将对域用户进行身份验证的HttpClient

  7. 7

    哪些OpenID Connect授权流程可对移动应用程序用户进行身份验证?

  8. 8

    Flask-Login检查是否在没有装饰器的情况下对用户进行了身份验证

  9. 9

    在Azure AD中如何为特定区域的用户进行身份验证和授权?

  10. 10

    REST API上的用户注册/身份验证流程

  11. 11

    LoginController 未对用户进行身份验证

  12. 12

    如何在yubikey python中为注册用户进行身份验证

  13. 13

    使用MEAN Stack进行用户注册和身份验证/授权

  14. 14

    如何使用 firebase sdk 对用户进行身份验证

  15. 15

    如何使用 ChatSDK 对 Firebase 用户进行身份验证?

  16. 16

    Firebase 用户注册/用户名身份验证

  17. 17

    当我的用户对我的对象进行身份验证时,将其正确,但如果未经身份验证,我的对象将变为假。我该如何解决?

  18. 18

    如何使用Google用户名进行身份验证。点亮Firebase身份验证

  19. 19

    客户端检查是否在Firebase中进行了身份验证

  20. 20

    多个用户进行身份验证和授权

  21. 21

    如何仅在Firebase 3中创建用户而不进行身份验证?

  22. 22

    如何通过Swift中的Firebase Twitter方法对Digits用户进行身份验证?

  23. 23

    Azure AD 身份验证错误:用户取消了流程

  24. 24

    如何在Firebase中管理用户的不同身份验证

  25. 25

    使用 Android 进行 Firebase 电子邮件和密码身份验证 - 用户注册

  26. 26

    如何在 AWS 自定义授权方中对用户进行身份验证?

  27. 27

    我进行了用户身份验证,并且在localhost中正常运行,但是在服务器上出现此错误::找不到类'\ app \ models \ User'

  28. 28

    客户端身份验证方案“匿名”对HTTP请求进行了未经授权的访问(通过C#基本身份验证写入)

  29. 29

    WCF用户身份验证和授权

热门标签

归档