Ich versuche, den "dauerhaften Langzeit-Download-Link" zu Dateien in unserem Firebase Storage-Bucket zu bekommen. Ich habe die Berechtigungen dies zuFirebase getDownloadURL
geändertservice firebase.storage {
match /b/project-xxx.appspot.com/o {
match /{allPaths=**} {
allow read, write;
}
}
}
Und mein javacode sieht wie folgt aus:
private String niceLink (String date){
String link;
// Points to the root reference
StorageReference storageRef = FirebaseStorage.getInstance().getReference();
StorageReference dateRef = storageRef.child("/" + date+ ".csv");
link = dateRef.getDownloadUrl().toString();
return link;
}
Als ich dies laufe ich die uri link bekommen, die so etwas wie com.google aussieht. [email protected]
Frage 1. Kann ich daraus den Download-Link kompatibel zu: https://firebasestorage.googleapis.com/v0/b/project-xxxx.appspot.com/o/20-5-2016.csv?alt=media&token=b5d45a7f-3ab7-4f9b-b661-3a2187adxxxx
Beim Versuch, den Link zu erhalten oben ich die letzte Zeile vor meiner Rückkehr geändert, wie folgt aus:
private String niceLink (String date){
String link;
// Points to the root reference
StorageReference storageRef = FirebaseStorage.getInstance().getReference();
StorageReference dateRef = storageRef.child("/" + date+ ".csv");
link = dateRef.getDownloadUrl().getResult().toString();
return link;
}
Aber wenn dies zu tun bekomme ich einen 403-Fehler, und die App abstürzt. Die Konsole sagt mir, dies ist bc Benutzer ist nicht angemeldet/auth. "Bitte anmelden, bevor nach Token gefragt wird" Frage 2. Wie behebe ich das Problem?
Prost!
Unter Verwendung der Async scheine ich auch einen Fehler mit dem .addSuccessListener zu erhalten (Methode kann nicht aufgelöst werden). Darüber hinaus, wenn ich in der onSuccess-Methode etwas wie link = downloadUrl.toString() verwenden, heißt es, es muss endgültig sein. Jede weitere Hilfe wäre super! –
1. Entschuldigung, das sollte addOnSuccessListener (typo) sein 2. Wenn Sie einen Fehler erhalten "muss endgültig sein" in Java bedeutet es, dass es ein Schließungsproblem ist. Siehe http://stackoverflow.com/questions/1299837/cannot-refer-to-a-non-final-variable-inside-an-inner-class-defined-in-a-differen für weitere Informationen. Grundsätzlich ist die kurze Antwort, definieren Sie die "Link" Variable als ein Klassenmitglied und es sollte in Ordnung sein. –
Arbeitete wie ein Sharm nach einigen Änderungen! Danke für die Hilfe! –