You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的Pyrebase/Firebase中添加Google/Facebook第三方登录?

添加Firebase Google、Facebook登录/注册功能(Python后端)

基于你已有的Firebase邮箱密码注册代码,以下是添加Google、Facebook第三方登录/注册的实现方案,核心逻辑是通过Firebase Admin SDK验证前端传来的第三方登录凭证(ID Token),完成用户身份校验与信息获取(首次登录时Firebase会自动完成用户注册)。

前置准备

  • 在Firebase控制台的「Authentication」→「登录方法」中,启用Google、Facebook登录提供商,并配置对应平台的客户端ID/密钥(Google需配置Web客户端ID,Facebook需配置应用ID与应用密钥)。
  • 前端需使用Firebase Auth SDK完成第三方登录流程,获取Firebase生成的ID Token,再将该Token传给后端接口。

代码实现

Google登录/注册处理函数

async def login_with_google(id_token: str):
    try:
        # 验证Google登录生成的Firebase ID Token
        decoded_token = auth.verify_id_token(id_token)
        uid = decoded_token["uid"]
        
        # 获取已注册的用户信息(首次登录时Firebase已自动创建用户)
        user = auth.get_user(uid)
        
        return {
            "message": "Google login successful",
            "uid": user.uid,
            "display_name": user.display_name,
            "email": user.email
        }
    except auth.InvalidIdTokenError:
        raise HTTPException(status_code=400, detail="Invalid Google ID token")
    except auth.UserNotFoundError:
        raise HTTPException(status_code=404, detail="User not found")
    except Exception as err:
        raise HTTPException(status_code=500, detail=f"Google login failed: {str(err)}") from err

Facebook登录/注册处理函数

async def login_with_facebook(id_token: str):
    try:
        # 验证Facebook登录生成的Firebase ID Token
        decoded_token = auth.verify_id_token(id_token)
        uid = decoded_token["uid"]
        
        # 获取已注册的用户信息(首次登录时Firebase已自动创建用户)
        user = auth.get_user(uid)
        
        return {
            "message": "Facebook login successful",
            "uid": user.uid,
            "display_name": user.display_name,
            "email": user.email
        }
    except auth.InvalidIdTokenError:
        raise HTTPException(status_code=400, detail="Invalid Facebook ID token")
    except auth.UserNotFoundError:
        raise HTTPException(status_code=404, detail="User not found")
    except Exception as err:
        raise HTTPException(status_code=500, detail=f"Facebook login failed: {str(err)}") from err

关键说明

  • 自动注册逻辑:用户首次通过Google/Facebook登录时,Firebase会自动在Auth系统中创建用户账户,无需后端手动调用auth.create_user。
  • 账户关联:若用户之前已通过邮箱密码注册,且第三方登录的邮箱与已注册邮箱一致,Firebase会自动关联两个账户,用户可通过任意方式登录。
  • Token验证:auth.verify_id_token会自动校验Token的签名、过期时间、受众等信息,确保凭证合法有效。

内容的提问来源于stack exchange,提问作者ProxilityProblemSolver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:22:46