Как правильно проверить токены аутентификации firebase с серверной части python?

# #python #reactjs #firebase #google-cloud-platform #firebase-authentication

Вопрос:

Конечная Цель: Создать нижеприведенный конвейер:

 User login to client app --> jwt tokens --> python server 
 --> verify tokens --> retrieve user_id 
--> use user_id to access multiple backend services based on token state.

 

Описание:

У меня есть небольшая интерфейсная служба, которая позволяет пользователям входить в google систему . Пользователи правильно могут зарегистрироваться, и я получаю их данные в базе данных аутентификации firebase. После успешного входа в систему мы получаем токен аутентификации от firebase следующим способом.

 firebase.auth()
  .signInWithPopup(provider)
  .then((result) => {
    var credential = result.credential;
    var token = credential.accessToken;
    var user = result.user;
  }).catch((error) => {
    var errorCode = error.code;
    var errorMessage = error.message;
    var email = error.email;
    var credential = error.credential;
  }); 

Который я взял из документации по базе.

Затем мы отправляем этот полученный токен на серверную часть python, которая использует:

 cred = credentials.Certificate('/path/to/service/account/key.json')
app = firebase_admin.initialize_app(cred)

token = 'eyJhbGci1iJSUzI1NiIsImtpZCI6ImFiMGNiMTk5Zjg3MGYyOGUyOTg5YWI0ODFjYzJlNDdlMGUyY2MxOWQiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiSGFyc2hpdCBDaG9wcmEiLCJwaWN0dXJlIjoiaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUFUWEFKd21nT01LUnBucnFvMDVqVmRkRTF5TVRpcmxiNGxRMWkxZG9SQmlXeDg9czk2LWMiLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vYmV0YS1zY2hvbGFybHlzIiwiYXVkIjoiYmV0YS1zY2hvbGFybHlzIiwiYXV0aF90aW1lIjoxNjIyOTE5OTA0LCJ1c2VyX2lkIjoiOTlrY2N2VmpPVFRWejBOTE5jUlBuTHRrZGg1MiIsInN1YiI6Ijk5a2NjdlZqT1RUVnowTkxOY1JQb'

decoded_token = auth.verify_id_token(token, app=app)
uid = decoded_token['uid']
print(uid)
 

Когда я запускаю приведенный выше фрагмент python, я получаю следующую ошибку:

 firebase_admin._auth_utils.InvalidIdTokenError: Wrong number of segments in token: b'token'
 

Я также заметил, что получаю токены, разделенные только одним периодом . . Я застрял на этом, любая помощь будет очень признательна.