小编dur*_*jaa的帖子

没有从 firebase 获取“电子邮件”使用 google 登录验证 id 令牌

在我的网络应用程序中,我使用 firebase google 登录来验证用户身份,流程如下

  1. 在前端让用户使用 firebase sdk 登录,获取用户的 idtoken 将其发送到服务器
  2. 服务器使用 idtoken 验证用户并从 idtoken 获取电子邮件

我正在使用 python 后端,并使用 google.oauth2.id_token 模块来验证令牌并解码令牌

问题是对于少数用户来说,解码的令牌不包含电子邮件字段

在前端,我尝试添加 userinfo.email 范围,但它仍然不起作用

我像这样添加了范围

googleProvider = new firebase.auth.GoogleAuthProvider(); googleProvider.addScope('https://www.googleapis.com/auth/userinfo.email')
Run Code Online (Sandbox Code Playgroud)

在后端我正在像这样解码令牌

decoded_token = google.oauth2.id_token.verify_firebase_token(auth_token, google.auth.transport.requests.Request())
Run Code Online (Sandbox Code Playgroud)

这是少数用户的解码令牌包含的内容(我已将实际值更改为“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"
  }
Run Code Online (Sandbox Code Playgroud)

解码的令牌中缺少电子邮件字段

对于少数用户,电子邮件字段存在 对于少数用户,电子邮件字段不存在

我不知道我错过了什么,我想在所有用户的解码令牌中包含电子邮件字段

javascript python firebase firebase-authentication google-signin

7
推荐指数
2
解决办法
3057
查看次数