Sto cercando di ottenere il "link di download permanente a lungo termine" per i file nel bucket di archiviazione Firebase. Ho cambiato i permessi di questo perFirebase getDownloadURL
service firebase.storage {
match /b/project-xxx.appspot.com/o {
match /{allPaths=**} {
allow read, write;
}
}
}
E il mio JAVACODE assomiglia a questo:
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;
}
Quando eseguo questo ho l'uri link che assomiglia com.google. [email protected]
domanda 1. Posso ottenere da questo il link di download simile a: https://firebasestorage.googleapis.com/v0/b/project-xxxx.appspot.com/o/20-5-2016.csv?alt=media&token=b5d45a7f-3ab7-4f9b-b661-3a2187adxxxx
Quando si cerca di ottenere il link qui sopra ho cambiato l'ultima riga prima del mio ritorno, come questo:
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;
}
Ma quando si fa questo ricevo un errore 403, e l'applicazione crash. La console mi dice che questo utente è bc non registrato/auth. "Effettuare l'accesso prima di chiedere il token" Domanda 2. Come posso risolvere questo problema?
Cheers!
Utilizzando l'Async, sembra che si stia verificando un errore con .addSuccessListener (Impossibile risolvere il metodo). Inoltre, quando io nel metodo onSuccess uso qualcosa come link = downloadUrl.toString() dice che deve essere definitivo. Qualsiasi ulteriore assistenza sarebbe fantastica! –
1. Mi spiace, dovrebbe essere addOnSuccessListener (typo) 2. quando ottieni un errore "deve essere definitivo" in java significa che c'è un problema di chiusura. Vedi http://stackoverflow.com/questions/1299837/cannot-refer-to-a-non-final-variable-inside-an-inner-class-defined-in-a-differen per maggiori informazioni. Fondamentalmente, la risposta breve è, definire la variabile "link" come membro della classe e dovrebbe andare bene. –
Ha funzionato come uno sharm dopo alcune modifiche! Grazie per l'aiuto! –