В моем веб-приложении я использую вход через Google Firebase для аутентификации пользователей. Процесс выглядит следующим образом:
- Во внешнем интерфейсе пользователь должен войти в систему с помощью Firebase SDK и получить идентификатор пользователя для пользователя.отправить его на сервер
- Сервер использует idtoken для проверки пользователя и получения электронной почты от idtoken
Я использую бэкэнд Python и использую модуль google.oauth2.id_token для проверкитокен и декодировать токен
Проблема заключается в том, что для нескольких пользователей декодированные дозы токенов не содержат поле электронной почты
В интерфейсе пользователя я также пытался добавить область userinfo.email.это не работает
Я добавил такую область видимости
googleProvider = new firebase.auth.GoogleAuthProvider(); googleProvider.addScope('https://www.googleapis.com/auth/userinfo.email')
в бэк-энде. Я декодирую токен вот так
decoded_token = google.oauth2.id_token.verify_firebase_token(auth_token, google.auth.transport.requests.Request())
это то, что декодируетсятокен содержится для нескольких пользователей (я изменил фактические значения на «sometext»)
{
"picture": "somtext",
"sub": "somtext",
"user_id": "somtext",
"name": "somtext",
"iss": "https://securetoken.google.com/somtext",
"firebase": {
"sign_in_provider": "google.com",
"identities": {
"google.com": [
"somtext"
]
}
},
"exp": 1557566434,
"auth_time": 1557562833,
"iat": 1557562834,
"aud": "somtext"
}
поле электронной почты отсутствует в декодированном токене
для нескольких пользователей поле электронной почты присутствует для немногих, оно естьненастоящее время
Я не знаю, что мне не хватает, я хочу, чтобы поле электронной почты было в декодированном токене для всех пользователей