2016-04-03 29 views
5

Sto provando ad accedere ai dati su firebase da python (2.7).Autenticazione utente Firebase in python

Qui sono le mie regole (su firebseio.com):

{ 
    "rules": { 
     "user": { 
      "$uid": { 
      ".read": "auth != null && auth.uid == $uid", 
      ".write": "auth != null && auth.uid == $uid" 
      } 
     } 
    } 
} 

Ecco uno screenshot del mio databse:

enter image description here

E per ultimo, il mio codice python:

from firebase import firebase 
from firebase.firebase import FirebaseApplication, FirebaseAuthentication 

DSN = 'https://<my name>.localhost' 
EMAIL = '[email protected]' 
authentication = FirebaseAuthentication(EMAIL, True, True, extra={'id': '<the user id>'}) 
firebase = FirebaseApplication(DSN, authentication) 
firebase.authentication = authentication 
print authentication.extra 

user = authentication.get_user() 
print user.firebase_auth_token 

Ora non riesco a capire come ottenere dati e inviare dati da e verso Firebase. Ho provato useing la linea: result = firebase.get('/users', None, {'print': 'pretty'}), ma mi dà questo errore:

ConnectionError: HTTPSConnectionPool(host='<my name>.localhost', port=443): Max retries exceeded with url: /users/.json?print=pretty&auth=<the token code of the user> (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x02A913B0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',)) 

qualcuno mi può fornire un codice di lavoro?

Grazie in anticipo,

Zvi Karp

+0

Cosa succede se non utilizzo un DSN? – marciokoko

risposta

6

Questi sono i passi che abbiamo preso per ottenere lavoro autenticazione.

(1) Innanzitutto è necessario un Segreto Firebase. Dopo aver creato un progetto in Firebase, fai clic su Impostazioni. Quindi fare clic su Database e scegliere di creare un segreto. settings

Copia il tuo segreto. Entrerà nel tuo codice più tardi.

secret

(2) è necessario il vostro URL Firebase. Avrà il seguente formato: https: //.firebaseio.com Copia anche questo.

(3) Ottieni un'API REST Firebase per Python. Abbiamo usato questo uno: https://github.com/benletchford/python-firebase-gae Spostarsi sopra la cartella lib ed eseguire questo comando che inserire il codice Firebase nella directory lib:

git clone http://github.com/benletchford/python-firebase-gae lib/firebase 

(4) Nel file "main.py" (o qualsiasi altra cosa si sta utilizzando) aggiungere questo codice:

from google.appengine.ext import vendor 
vendor.add('lib') 

from firebase.wrapper import Firebase 

FIREBASE_SECRET = 'YOUR SECRET FROM PREVIOUS STEPS' 
FIREBASE_URL = 'https://[…].firebaseio.com/' 

(5) aggiungere questo codice al MainHandler (supponendo che si sta utilizzando AppEngine):

class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     fb = Firebase(FIREBASE_URL + 'users.json', FIREBASE_SECRET) 

     new_user_key = fb.post({ 
      "job_title": "web developer", 
      "name": "john smith", 
     }) 
     self.response.write(new_user_key) 
     self.response.write('<br />') 

     new_user_key = fb.post({ 
      "job_title": "wizard", 
      "name": "harry potter", 
     }) 
     self.response.write(new_user_key) 
     self.response.write('<br />') 

     fb = Firebase(FIREBASE_URL + 'users/%s.json' % (new_user_key['name'],), FIREBASE_SECRET) 
     fb.patch({ 
      "job_title": "super wizard", 
      "foo": "bar", 
     }) 

     fb = Firebase(FIREBASE_URL + 'users.json', FIREBASE_SECRET) 
     self.response.write(fb.get()) 
     self.response.write('<br />') 

Ora quando accedi al tuo database in tempo reale di Firebase, dovresti vedere le voci per Harry Potter come utente e altri.

Problemi correlati