Search code examples
pythonfirebasefirebase-authenticationkivyfirebase-admin

How to authenticate login with firebase admin sdk with python


Is there any way by which I can make a user login using his email and password registered in my firebase authentication database? I am using firebase admin SDK and kivy to make an app.

import self as self
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
import firebase_admin
from firebase_admin import credentials
from firebase_admin import auth

creds = credentials.Certificate('E:/Key/koronaksha_Key.json')
firebase_admin.initialize_app(creds)
class MainApp(App):
    def build(self):
        cols = 2
        main_layout = BoxLayout(orientation="vertical")
        email_label = Label(text = 'Email')
        main_layout.add_widget(email_label)
        self.email_input = TextInput(multiline=False)
        main_layout.add_widget(self.email_input)
        pass_label = Label(text='Password')
        main_layout.add_widget(pass_label)
        self.pass_input = TextInput(password=True, multiline=False)
        main_layout.add_widget(self.pass_input)
        submit = Button(text='Submit',
                        size_hint=(.5, .1),
                        pos_hint={'center_x': .5, 'center_y': .1})
        submit.bind(on_press=self.on_press_button)
        main_layout.add_widget(submit)

        return main_layout

    def on_press_button(self, instance):
        print('You pressed the button!' + self.email_input.text + self.pass_input.text)
if __name__ == '__main__':
    app = MainApp()
    app.run()

Solution

  • Its not the SDK, but its works.

    url = "%s?key=%s" % (__FIREBASE_USER_VERIFY_SERVICE, __FIREBASE_API_KEY)
    data = {
        "email": request.data['email'],
        "password": request.data['password'],
        "returnSecureToken": True
    }
    result = requests.post(url, json=data)
    if result.ok:
       token = auth.create_custom_token(user_rec['localId'])
       exp = datetime.timedelta(days=1)
       cookie = auth.create_session_cookie(user_rec['idToken'], expires_in=exp)
    else:
        print('User %s fail to login')