13
13
"""
14
14
15
15
import json
16
+ import math
16
17
import datetime
17
18
import python_jwt as jwt
18
19
import jwcrypto .jwk as jwk
@@ -47,7 +48,6 @@ def __init__(self, api_key, credentials, requests, client_secret=None):
47
48
self .credentials = credentials
48
49
self .requests = requests
49
50
50
- self .current_user = None
51
51
self .provider_id = None
52
52
self .session_id = None
53
53
@@ -137,9 +137,8 @@ def sign_in_with_email_and_password(self, email, password):
137
137
request_object = self .requests .post (request_ref , headers = headers , data = data )
138
138
139
139
raise_detailed_error (request_object )
140
- self .current_user = request_object .json ()
141
140
142
- return request_object .json ()
141
+ return _token_expire_time ( request_object .json () )
143
142
144
143
def sign_in_anonymous (self ):
145
144
""" Sign In Anonymously.
@@ -160,9 +159,8 @@ def sign_in_anonymous(self):
160
159
request_object = self .requests .post (request_ref , headers = headers , data = data )
161
160
162
161
raise_detailed_error (request_object )
163
- self .current_user = request_object .json ()
164
162
165
- return request_object .json ()
163
+ return _token_expire_time ( request_object .json () )
166
164
167
165
def create_custom_token (self , uid , additional_claims = None , expiry_minutes = 60 ):
168
166
""" Create a Firebase Auth custom token.
@@ -231,7 +229,7 @@ def sign_in_with_custom_token(self, token):
231
229
232
230
raise_detailed_error (request_object )
233
231
234
- return request_object .json ()
232
+ return _token_expire_time ( request_object .json () )
235
233
236
234
def refresh (self , refresh_token ):
237
235
""" Refresh a Firebase ID token.
@@ -259,12 +257,13 @@ def refresh(self, refresh_token):
259
257
260
258
# handle weirdly formatted response
261
259
user = {
262
- "userId " : request_object_json ["user_id" ],
260
+ "localId " : request_object_json ["user_id" ],
263
261
"idToken" : request_object_json ["id_token" ],
264
- "refreshToken" : request_object_json ["refresh_token" ]
262
+ "refreshToken" : request_object_json ["refresh_token" ],
263
+ "expiresIn" : request_object_json ["expires_in" ]
265
264
}
266
265
267
- return user
266
+ return _token_expire_time ( user )
268
267
269
268
def get_account_info (self , id_token ):
270
269
""" Fetch user's stored account information.
@@ -461,9 +460,8 @@ def sign_in_with_oauth_credential(self, oauth2callback_url):
461
460
request_object = self .requests .post (request_ref , headers = headers , json = data )
462
461
463
462
raise_detailed_error (request_object )
464
- self .current_user = request_object .json ()
465
463
466
- return request_object .json ()
464
+ return _token_expire_time ( request_object .json () )
467
465
468
466
def _token_from_auth_url (self , url ):
469
467
""" Fetch tokens using the authorization code from given URL.
@@ -562,3 +560,8 @@ def _load_client_secret(secret):
562
560
secret = secret ['web' ]
563
561
564
562
return secret
563
+
564
+
565
+ def _token_expire_time (user ):
566
+ user ['expiresAt' ] = math .floor (datetime .datetime .today ().timestamp () + int (user .get ('expiresIn' )) - 60 )
567
+ return user
0 commit comments