我正在开发 Django Web 应用程序,我想集成 Firebase Google Login 进行用户身份验证。我已经浏览了 Firebase 文档,但找不到在 Django 中实现 Google Login 的直接方法。
我想知道如何将 Firebase Google Login 添加到我的 Django 应用程序中。具体来说,我想实现以下目标:
允许用户使用他们的 Google 帐户登录我的 Django 应用程序。 身份验证成功后,从 Google 检索用户信息,例如电子邮件、姓名和个人资料图片。 将经过身份验证的用户保存到 Firebase 身份验证以进行进一步的身份验证和授权。 我已经为我的项目设置了 Firebase 并获取了必要的服务帐户 JSON 文件。我还安装了所需的软件包,例如 firebase-admin,
首先你必须安装“pip install firebase-admin”
在settings.py中添加服务器帐户密钥json文件,从firebase控制台项目设置中获取>单击服务器帐户选项卡>向下滚动,然后选择python并生成密钥,这是json文件,将其重命名,复制并粘贴到您的django项目中,然后在设置中.py 添加此行
#settings.py
import os
import firebase_admin
from firebase_admin import credentials
FIREBASE_ADMIN_CREDENTIAL = os.path.join(BASE_DIR,'path/to/your/serviceAccountKey.json') # you have to add path according to your file location
cred = credentials.Certificate(FIREBASE_ADMIN_CREDENTIAL)
firebase_admin.initialize_app(cred)
#This is view.py
#from client site get the id_token
class GoogleLoginView(APIView):
def post(self, request, *args, **kwargs):
id_token = request.data.get("id_token")
if not id_token:
return Response({"error": "ID token is required"}, status=status.HTTP_400_BAD_REQUEST)
try:
# Verify the ID token using Firebase Admin SDK
decoded_token = firebase_auth.verify_id_token(id_token)
uid = decoded_token["uid"]
email = decoded_token["email"]
# Get or create user
user, created = User.objects.get_or_create(email=email, defaults={
"username": email.split("@")[0],
})
# Generate JWT token
refresh = RefreshToken.for_user(user)
return Response({
"refreshToken": str(refresh),
"accessToken": str(refresh.access_token),
"id": user.id,
"username": user.username,
"email": user.email,
}, status=status.HTTP_200_OK)
except Exception as e:
return Response({"error": str(e)}, status=status.HTTP_400_BAD_REQUEST)