2016-09-20 1 views
0

인증 된 사용자에게만 읽기/쓰기 권한을 부여해야하지만, Firebase가 사용자가 인증되었음을 인식하지 못하는 것 같습니다.Firebase 오류 : 사용 권한이 거부되었습니다. Firebase 데이터베이스에서 읽거나 쓸 수 없습니다.

전자 메일 및 암호로 사용자에 로그인 한 후 사용자가 인증되었다고 가정하고 데이터베이스에서 읽고 쓸 수 있어야합니다. 그러나 권한이 거부되었습니다.

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

코드는 레거시 2.x.x의 API 호출을 혼합 한 것입니다. 예를 들어 SDK :

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

새로운 9.x.x의 SDK :

firebaseAuth.signInWithEmailAndPassword()

두 SDK를 호환되지 않습니다. 당신은 다른 것을 사용해야합니다. Upgrade Guide은 기존 SDK에서 새 SDK로 마이그레이션하는 방법을 설명합니다.

사용 된 SDK에 해당하는 Firebase 콘솔 (Legacy Console 또는 Firebase Console)을 사용해야합니다.

+0

sRef.authWithPassword (전자 메일, 암호, 새 Firebase.AuthResultHandler()가 여전히 작동하지 않습니다.) 내가 수행 한 첫 번째 작업입니다. –

+0

작업이 완료되었습니다. 업데이트 만하면됩니다. android studio 리포지토리를 만들고 새로운 종속성을 추가하십시오. 감사합니다. –

관련 문제