skunkwerk
skunkwerk

Reputation: 3070

Firebase Permission Denied with Pyrebase library

I have setup a Firebase account and a database.

I have copied the config with the API key into my Python code.

I still get a 401 Permission denied error on Python 3.5

import pyrebase
config = {
"apiKey": "*****",
"authDomain": "***-bot.firebaseapp.com",
"databaseURL": "https://***-bot.firebaseio.com",
"storageBucket": "ebo-bot.appspot.com"
}

firebase = pyrebase.initialize_app(config)
db = firebase.database()
data = {"name": "Mortimer 'Morty' Smith"}
db.child("users").child("Morty").set(data)

My database rules are set to:

{
 "rules": {
".read": "auth != null",
".write": "auth != null"
}
}

Upvotes: 5

Views: 9139

Answers (2)

set method is missing the user['idToken'], and you forgot to authenticate, try:

import pyrebase
config = {
"apiKey": "*****",
"authDomain": "***-bot.firebaseapp.com",
"databaseURL": "https://***-bot.firebaseio.com",
"storageBucket": "ebo-bot.appspot.com"
}

firebase = pyrebase.initialize_app(config)
db = firebase.database()
auth = firebase.auth()

user = auth.sign_in_with_email_and_password("[email protected]", "passwordhere")

data = {"name": "Mortimer 'Morty' Smith"}
db.child("users").child("Morty").set(data,user['idToken'])

(you also need to create an user before running this, go to your firebase dashboard and click on the authentication tab, you can add users there)

Upvotes: 2

importnumpyasnp
importnumpyasnp

Reputation: 262

I ran into this same issue trying to upload data to the database. I reread the beginning of: https://github.com/thisbejim/Pyrebase/blob/master/README.md

import pyrebase

config = {
  "apiKey": "apiKey",
  "authDomain": "projectId.firebaseapp.com",
  "databaseURL": "https://databaseName.firebaseio.com",
  "storageBucket": "projectId.appspot.com",
  "serviceAccount": "path/to/serviceAccountCredentials.json"
}

firebase = pyrebase.initialize_app(config)

Add the serviceAccount entry into the configuration with a path to a key that you can download from Firebase.

enter image description here

To get there: Settings > Project Settings > Service Accounts > Generate New Private Key.

Put that key in some desired location and put that location in the "serviceAccount" path.

Hope it helps.

Upvotes: 13

Related Questions