如何通过 django-allauth 使用 Google One Tap 登录?

问题描述

Google 一键登录不使用 OAuth 流程。我的问题是如何将其集成到使用 allauth 进行身份验证的 django 应用程序中?

我找到了一个教程,通过该教程,您可以通过一键登录 https://developers.onelogin.com/quickstart/google-ontap-with-onelogin

获取电子邮件、姓名等基本详细信息

如何集成才能完成登录

解决方法

您可以将其与此视图集成:

from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter
from rest_auth.registration.views import SocialLoginView

from rest_auth.registration.serializers import SocialLoginSerializer


class GoogleLogin(SocialLoginView):
    adapter_class = GoogleOAuth2Adapter
    serializer_class = SocialLoginSerializer

    def get_serializer(self,*args,**kwargs):
        serializer_class = self.get_serializer_class()
        kwargs['context'] = self.get_serializer_context()
        return serializer_class(*args,**kwargs)

并在您的 settings.py 文件中添加您的 google auth 密钥,如下所示:

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        "APP": {
            "client_id": env.str("GOOGLE_CLIENT_ID",""),"secret": env.str("GOOGLE_SECRET_KEY",},}

重要提示:以上视图模型期望 POST 方法中的有效负载,并且一旦用户通过 Google 身份验证,您就会从 oauth2 响应中找到那些有效负载。

我不知道你的前端是什么,但是你可以找到前端相关的SDK,使用响应数据发送payload就可以了。事情比你想象的要容易