微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

django-allauth Google 登录不适用于 iOS

如何解决django-allauth Google 登录不适用于 iOS

我正在使用 django 构建 PWA,并且在使用 django-allauth Google 登录时遇到了这个问题。在装有 Chrome 和 Edge 的 Windows PC 上一切正常。但是当尝试在 iOS 设备上使用 Google 登录时,我收到社交网络登录失败,代码为:'unkNown',异常:'PermissionDenied()'

任何想法可能是什么原因或在哪里搜索它?

编辑

我尝试进行更多调试并得到这些错误(仅在 iOS 设备上!):

内部服务器错误:/accounts/google/login/callback/ Traceback (最近一次通话):文件 "/home/kava/.virtualenvs/django3/lib/python3.8/site-packages/allauth/socialaccount/providers/oauth2/views.py",第 141 行,调度中 login.state = SocialLogin.verify_and_unstash_state( 文件“/home/kava/.virtualenvs/django3/lib/python3.8/site-packages/allauth/socialaccount/models.py”,第 325 行,在 verify_and_unstash_state 中 提高 PermissionDenied() django.core.exceptions.PermissionDenied

解决方法

我设法解决了这个问题。

错误是由该函数中 if "socialaccount_state" not in request.session: 后面的行引起的:

@classmethod
def verify_and_unstash_state(cls,request,verifier):
    if "socialaccount_state" not in request.session:
        raise PermissionDenied()
    state,verifier2 = request.session.pop("socialaccount_state")
    if verifier != verifier2:
        raise PermissionDenied()
    return state

所以问题出在会话数据上,更准确地说,缺少“socialaccount_state”。

在谷歌搜索这个与 iOS 相关的问题后,我发现了 this 线程。

我按照那里的建议将 SESSION COOKIE_SAMESITECSRF_COOKIE_SAMESITE 更改为 None 并且它有效!

顺便说一句,如果“无”位于撇号之间,则它不适用于 iOS 12 设备。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。