Python 用户电子邮件(正确)在前端显示为已验证,但在修改的firenotes中未显示为后端

Python 用户电子邮件(正确)在前端显示为已验证,但在修改的firenotes中未显示为后端,python,google-app-engine,firebase,flask,firebase-authentication,Python,Google App Engine,Firebase,Flask,Firebase Authentication,为了解决票数接近的问题,我在这里要求的是如何检查用户是否已在应用程序引擎上用python验证了他们的电子邮件 后端python代码的相关部分是: id_token = request.headers['Authorization'].split(' ').pop() claims = google.oauth2.id_token.verify_firebase_token( id_token, HTTP_REQUEST, MY_PROJECT_ID) if not claims

为了解决票数接近的问题,我在这里要求的是如何检查用户是否已在应用程序引擎上用python验证了他们的电子邮件

后端python代码的相关部分是:

id_token = request.headers['Authorization'].split(' ').pop()
claims = google.oauth2.id_token.verify_firebase_token(
        id_token, HTTP_REQUEST, MY_PROJECT_ID)

if not claims:
    return 'Unauthorized', 401
logging.warn('email verified? {}'.format(claims['email_verified'])) # always False

原职:

我正在处理示例代码。我已禁用除电子邮件登录之外的所有功能,并希望在后端确保用户已验证其电子邮件地址。在内部,检查
user.emailVerified
可以得到正确的值

但是,如果我添加一个
logging.warn(声明)
我总是会看到一个键值对
u'email\u verified':False
。我尝试在验证后重新启动服务器,以避免缓存问题(如果存在缓存问题,仍然会很糟糕),但似乎无法检测用户是否在后端的电子邮件中单击了验证链接


我是否需要添加或配置一些东西以使后端能够查看(或可能检查)电子邮件验证?

我刚刚遇到了完全相同的问题。问题似乎是与特定firebase令牌相关联的属性变得过时,而此问题只影响后端基于令牌的验证解决方案:如果用户在电子邮件验证后注销并重新登录,则信息将更新。


更准确地说,这是当前的行为。在Javascript中,在前端,用户验证电子邮件并刷新页面后,
firebase.auth().currentUser.emailVerified
立即正确为true。但是,当通过
user.getIdToken().then(函数(token){sendToServer(token);})
将相应的firebase令牌发送到服务器时,然后使用后端的Google App engine python库验证为
uinfo=Google.oauth2.id_令牌。验证firebase_令牌(token,Google.auth.transport.requests())
,然后,
uinfo['email\u verified']
将保持
False
,直到用户重新登录并发出更新的令牌

我明白你的意思,似乎
用户
idToken
索赔
之间的数据不一致。您必须信任由Firebase签名的令牌。我可以想象结果
claim
不知道用户是如何认证的,或者这是一个尚未实现的功能。