【发布时间】:2016-08-06 05:51:35
【问题描述】:
用户登录并激活会话后,由于权限被拒绝错误,无法读取/写入数据。规则是标准的:
// These rules require authentication
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
FirebaseAuth 运行良好,所有凭据均可访问,但无法从 Firebase 根节点访问。
检索实例没有任何问题:
mAuth = FirebaseAuth.getInstance();
Firebase Auth(使用电子邮件和密码方案)代码:
public void signIn(String email, String password) {
mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
showAlert(Values.ERROR, Values.WRONG_EMAIL_OR_PASSWORD_ALERT);
} else {
changeStatus(FirebaseAuth.getInstance().getCurrentUser());
startActivity(new Intent(mTab.getContext(), MainActivity.class));
}
mProgress.hide();
}
});
}
在我设置 Firebase 上下文之前:
Firebase.setAndroidContext(mTab.getContext());
即使成功登录后,由于权限失败,我也无法访问我的数据库:
public void changeStatus(FirebaseUser user, String status) {
Firebase.setAndroidContext(getContext());
mStatusRef = new Firebase(Values.FIREBASE_ADDRESS + "/statuses/" + user.getUid() + "/");
mStatusRef.setValue(status);
}
或
public void setLastMessage(final MyViewHolder holder, String uid) {
Firebase.setAndroidContext(mView.getContext());
mMessageRef = new Firebase(Values.FIREBASE_ADDRESS + "/users/" + mUser.getUid() + "/chats/" + uid + "/message");
mMessageRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
holder.lastMessage.setText(dataSnapshot.getValue().toString());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
来自控制台的错误:
W/RepoOperation: setValue at /statuses/ghTGuwjc4saAQqyJgoMONV2Rz483 failed: FirebaseError: Permission denied
W/SyncTree: Listen at /party failed: FirebaseError: Permission denied
我的 JSON 树具有以下结构: Firebase Database tree view from console
app/build.graddle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "GGG.GGG.com.GGG"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
repositories {
maven {
url "https://jitpack.io"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.firebase:firebase-client-android:2.5.2+'
compile 'com.google.firebase:firebase-auth:9.2.0'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:cardview-v7:23.0.+'
compile 'com.github.castorflex.smoothprogressbar:library:1.0.0'
compile 'com.yalantis:phoenix:1.2.3'
compile 'com.facebook.network.connectionclass:connectionclass:1.0.1'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.easing:library:1.0.1@aar'
compile 'com.daimajia.androidanimations:library:1.1.3@aar'
compile 'com.roughike:swipe-selector:1.0.6'
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
}
apply plugin: 'com.google.gms.google-services'
我的应用程序由 MainActivity 和 ViewPager 小部件组成。但根据 Firebase Docs,只要 FirebaseAuth 实例可访问,这意味着会话处于活动状态(因此用户已通过身份验证),这无关紧要。
也许我错过了什么?我尝试多次阅读 Firebase 文档(一切都非常清晰易懂),但感觉我的问题在上下文中是独一无二的。
我将规则更改为 Public 仅用于开发目的,但是我不能让我的数据库在最终版本发布后向所有人开放...
可能是什么问题?
我正在使用 Firebase 控制台和这个 Android 设置指南:
由于某种原因,我无法将我的 graddle 文件升级到最新的 Firebase 版本 'com.google.firebase:firebase-core:9.4.0' 依赖项。它编译时出现错误“无法解析”。
【问题讨论】:
-
请添加您的 firebaseauth 代码
-
感谢您的回复!立即添加详细信息
-
现在尽我所能添加。有些东西告诉我这是 graddle 文件的问题,或者我正在使用过时的东西。当我尝试添加最新的编译 'com.google.firebase:firebase-core:9.4.0' 依赖项时,出现错误:“无法解析”。
-
我也在最新的 unity firebase 4.2.1 上获得了这个,用于全新的应用安装 1. 身份验证状态已更改。通知 1 个听众。 2. 登录成功 3. Firebase.Database.DatabaseException: Firebase Database error: Permission denied
标签: android json firebase firebase-realtime-database