L'utilisateur n'est pas autorisé à accéder à cet objet . Firebase stockage android
Je suis nouveau sur firebase de stockage. Juste pour que je puisse apprendre cela, j'ai fait une application simple qui a un bouton et un ImageView
. Quand je clique sur le bouton, une image (from drawable)
est affiché sur l'ImageView. J'ai aussi écrit le code pour télécharger l'image sur Firebase, mais le message de l'exception de onAddFailureListener
donne message Utilisateur n'est pas autorisé à accéder à cet objet. Que dois-je faire ?
package com.example.asad.save_photo;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.net.Uri;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageMetadata;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.io.ByteArrayOutputStream;
import java.io.File;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("gs://savephoto-a1cc3.appspot.com");
final StorageReference mountainsRef = storageRef.child("asad");
Button butt = (Button) findViewById(R.id.button);
butt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView imageView = (ImageView) findViewById(R.id.image);
imageView.setImageResource(R.drawable.back2);
//imageView.setImageResource(R.drawable.back2);
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
final byte[] data = baos.toByteArray();
UploadTask uploadTask = mountainsRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
//Handle unsuccessful uploads
showToast(exception.getMessage());
}
});
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
//Uri downloadUrl = taskSnapshot.getDownloadUrl();
showToast("success !!!!!");
}
});
}
});
}
public void showToast(String s) {
Toast.makeText(this,s,Toast.LENGTH_LONG).show();
}
}
Voici mon firebase de stockage de règles
service firebase.storage {
match /b/savephoto-a1cc3.appspot.com/o {
allow read,write;
}
}
- votre version de l'OS est de 6.0 ? si oui, alors obtenir de l'exécution l'autorisation de stackoverflow.com/questions/38141523/...
- Nope. Ma version de l'OS est de 4,2
- Avez-vous ajouter des autorisations dans le fichier de manifeste?
- <uses-permission android:name="android.la permission.READ_EXTERNAL_STORAGE" /> C'est la seule que j'ai ajouté. Je suis vraiment nouveau, donc n'hésitez pas à signaler les erreurs
- <uses-permission android:name="android.la permission.INTERNET" /> celui-là aussi.
Vous devez vous connecter pour publier un commentaire.
Mise à jour de vos règles de sécurité avec
match /{allPaths=**}
pour indiquer que le public, de lire et d'écrire l'accès est autorisé sur tous les chemins:Diverses règles par défaut sont fournit dans les onglets de la Des Exemples De Règles section de la documentation.
Modifier votre espace de stockage de règles dans Firebase console
Go de stockage -> onglet Règles de
ajouter cette
Simplement aller pour le Stockage des Règles. Entrez la règle suivante, en remplaçant le nom de bucket avec votre propre nom de bucket. Vous pouvez trouver le seau nom en va de Stockage de Fichiers.
Il devrait ressembler à quelque chose comme ceci:
myapplication-xxxx.appspot.com
C'est tout ce dont vous avez besoin. Vous n'avez pas besoin d'activer l'authentification, si vous le faites à des fins de test uniquement. Si vous avez besoin d'authentification, vous pouvez l'ajouter plus tard.
Ces soloutions n'ai vraiment pas à résoudre mon problème.
qu'ai résolu mon problème sont les lignes:
en application module
et ce code pour télécharger et d'obtenir un lien de téléchargement