# #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'
Я также заметил, что получаю токены, разделенные только одним периодом .
. Я застрял на этом, любая помощь будет очень признательна.