我正在使用匿名身份验证。
Flutter: signed in! FirebaseUser({displayName: null, providerId: Firebase, uid: 6vj0tYIQsUSjsdiJfkjid37NhKk2, providerData: [], isEmailVerified: false, email: null, photoUrl: null, isAnonymous: true})
我的规则如下
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
而且我不断收到此错误
但是如果我将规则更改为公开
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if true;
}
}
}
有效!
知道发生了什么吗?
这是我的代码。我找不到任何地方可以提供我的身份验证信息,也不确定是否必须这样做。
final DatabaseReference dbRef = FirebaseDatabase().reference();
final StorageReference storageRef = FirebaseStorage().ref();
final FirebaseAuth auth = FirebaseAuth.instance;
Future<void> connect() async {
this.app = await FirebaseApp.configure(
name: 'when-coin-test',
options: const FirebaseOptions(
googleAppID: '1:3739845793845:ios:9287349823487',
apiKey: 'AoijojsoafhsdiohIOSHFOSHfoiShdfoijdf',
databaseURL: 'https://when-coin-test.firebaseio.com',
storageBucket: 'gs://when-coin-test.appspot.com'
)
);
print("connected to firebase!");
this.user = await this.auth.signInAnonymously();
print("signed in! $user");
await _getAllSocialImageUrls();
print("got socialUrls! $socialUrls");
}
答案 0 :(得分:2)
我认为您传递给configure
的凭据不起作用。
Flutter的Firebase 的配置并未在各处记录。在 Android 的步骤 1。和 iOS right here的步骤 2。之后,您已经设置好了凭您的凭据。
FirebaseAuth
将与此配合使用,并自动与其他 Firebase插件(例如Firebase Storage)集成。
因此,您实际上可以忽略所有这些操作:
this.app = await FirebaseApp.configure(
...
);
如果您要处理多个项目,仍然可以使用FirebaseApp
,但是对于您的用例来说,您完全不需要 访问该类。
firebase_core
作为包的目的在页面上描述如下:
Flutter的Firebase核心
一个Flutter插件,可以使用Firebase Core API,该插件可以连接到 多个 Firebase应用。
答案 1 :(得分:0)
我很好奇,因此我没有使用.configure()
方法(如creativecreatorormaybenot所述)启动FirebaseApp。
这样做,一切正常。
app = FirebaseApp(name: 'when-coin-test');
user = await this.auth.signInAnonymously();
该示例已过期:https://github.com/flutter/plugins/blob/master/packages/firebase_core/example/lib/main.dart
答案 2 :(得分:0)
使用FirebaseAuth.fromApp(app)代替FirebaseAuth.instance。或者,您可以使用我简单的FirebaseWrapper。
import 'dart:async';
import 'dart:io';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/material.dart';
Future<void> main() async {
await FirebaseWrapper.init();
runApp(
MyApp(),
);
}
class FirebaseWrapper {
static FirebaseAuth _auth;
static Firestore _firestore;
static FirebaseStorage _storage;
static Future<void> init() async {
WidgetsFlutterBinding.ensureInitialized();
final FirebaseApp app = await FirebaseApp.configure(
name: 'Overload',
options: FirebaseOptions(
googleAppID: Platform.isIOS ? '1:0000000000:ios:000000000000' : '1:fbfbfbfbfbfbfbbf:android:fbfbfbfbfbfbfbfbf',
gcmSenderID: '14325256252',
apiKey: 'JHasjkhvKJKhfgKfdlLDFLkDLkDJhD',
projectID: 'some-project-id',
),
);
_auth = FirebaseAuth.fromApp(app);
_firestore = Firestore(app: app);
_storage = FirebaseStorage(
app: app, storageBucket: 'gs://overload-57752.appspot.com');
}
static FirebaseAuth auth() {
return _auth;
}
static Firestore firestore() {
return _firestore;
}
static FirebaseStorage storage() {
return _storage;
}
}