2016-09-20 63 views
0

读/写我需要给只有通过验证的用户读/写访问,但它似乎是火力地堡没有识别出用户进行身份验证。Firebase错误:权限被拒绝。无法从火力地堡数据库

后,我与电子邮件和密码登录,我假设用户进行身份验证,并应允许读取数据库/写。但是,许可被拒绝。

下面是登录活动代码:我想使用火力的默认规则,只允许auth用户阅读从数据库/写

firebaseAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      //checking if success 
      if(task.isSuccessful()){ 
       //display some message here 
       // Toast.makeText(Register.this,"Successfully registered",Toast.LENGTH_LONG).show(); 


       sRef.authWithPassword(email,password,new Firebase.AuthResultHandler() { 

        @Override 
        public void onAuthenticated(AuthData authData) { 
         Toast.makeText(Register.this, user.getDisplayName()+" is authenticated",Toast.LENGTH_LONG).show(); 
        } 

        @Override 
        public void onAuthenticationError(FirebaseError firebaseError) { 
        } 
       }); 

       Intent i = new Intent(Register.this,MainActivity.class); 

       startActivity(i); 

      }else{ 
       //display some message here 
       Toast.makeText(Register.this, task.getException().getMessage(),Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 

{ 
"rules": { 
    ".read": "auth != null", 
".write": "auth != null" 
} 
} 

但是,当我改变了下面的规则,我的代码能够获得对数据库的读/写访问权限。

{ 
"rules": { 
".read": true, 
".write":true 
} 
} 

这在测试中很好,但是我不能用这种方法继续生产。请帮助,如何验证注册用户访问Firebase中的数据库。

+0

无在共享代码的访问数据库,所以它不能提高这个错误呢。请分享[重现问题所需的最低限度完整代码](http://stackoverflow.com/help/mcve)。 –

+0

您是否在登录前启用了firbase登录方法,如电子邮件/密码或匿名身份验证部分。 –

+0

我没有分享访问Firebase数据库的代码,因为它正在工作,但只有当我将规则更改为公开时​​。当我使用默认规则时,权限被拒绝。 –

回答

3

你的代码是API调用的从旧2.x.x.混合SDK,例如:

sRef.authWithPassword(email,password,new Firebase.AuthResultHandler()

和新9.x.x SDK:

firebaseAuth.signInWithEmailAndPassword()

两个软件开发工具包不兼容。你需要使用或其他。 Upgrade Guide解释了如何从旧SDK迁移到新SDK。

您还需要使用与所用SDK对应的Firebase控制台:Legacy Console或新的Firebase Console

+0

我也尝试用去除:。sRef.authWithPassword(电子邮件,密码,新Firebase.AuthResultHandler(),但它仍然不工作这是我做的第一件事 –

+0

我得到了它的工作,我所要做的就是更新android studio版本库并添加新的依赖关系。谢谢。 –

相关问题